2017-02-01 7 views
0

テーブルのレイアウトを視覚的に示していますが、私の目標はwn_writing_number_cstm.id_cフィールドをpreps_contracted_reps.idに加えることです。明確にするためにMySQL - 既にテーブルにテーブルに参加しています

、何をここで見ることは同じままでなければならない、私は彼らがどこにあるか参加し、それに加えて、契約担当者のための書き込み数をつかむ維持する必要があります。(私が取得する必要がありますtitle_cフィールド)

ここに私の現在のコードですが、私は複数の結合を試しましたが、私が必要とするものを得るために適切なJOINを見つけられないようです。このステートメントは、title_cフィールドを除き、必要なものすべてを取得します。これは、担当者の書き込み番号に関連しています。

EDIT:追加のJOINステートメントをエイリアスに追加すると、何も返されません。

SELECT 
leads.id, 
leads.date_entered, 
leads.date_modified, 
leads.first_name, 
leads.last_name, 
leads.primary_address_state, 
leads.converted, 
leads.`status`, 
leads.lead_source, 
leads_cstm.territory_c, 
leads_cstm.contact_status_c, 
leads_cstm.campaign_id_c, 
leads_cstm.industry_c, 
leads_cstm.contract_type_c, 
leads_cstm.recruiting_link_sent_c, 
preps_contracted_reps.first_name AS rep_first_name, 
preps_contracted_reps.last_name AS rep_last_name, 
wn_writing_number_cstm.title_c 
FROM 
leads_wn_writing_number_1_c 
JOIN wn_writing_number 
ON leads_wn_writing_number_1_c.leads_wn_writing_number_1wn_writing_number_idb = wn_writing_number.id 
JOIN leads_cstm 
ON leads_wn_writing_number_1_c.leads_wn_writing_number_1leads_ida = leads_cstm.id_c 
RIGHT JOIN leads 
ON leads.id = leads_cstm.id_c 
JOIN wn_writing_number_cstm 
ON wn_writing_number.id = wn_writing_number_cstm.id_c 
JOIN preps_contracted_reps_wn_writing_number_1_c 
ON preps_contracted_reps_wn_writing_number_1_c.preps_contracted_reps_wn_writing_number_1wn_writing_number_idb = wn_writing_number_cstm.wn_writing_number_id_c 
JOIN preps_contracted_reps 
ON preps_contracted_reps_wn_writing_number_1_c.preps_cont9effed_reps_ida = preps_contracted_reps.id 
JOIN preps_contracted_reps AS upline_table 
ON upline_table.id = wn_writing_number_cstm.id_c 
WHERE 
leads.deleted = '0' 
GROUP BY 
leads.id 

私はまた、このような何かをやってみましたが、ここでは、この記事によると:sql server - IN clause with multiple fieldsINステートメントに複数の列を戻すことはできません。これは私に正しいtitle_cを返します。しかし、下のサブクエリに関連するので、私が上から選択したすべてのフィールドも必要です。

SELECT 
preps_contracted_reps.first_name AS rep_first_name, 
preps_contracted_reps.last_name AS rep_last_name, 
wn_writing_number_cstm.title_c 
FROM 
preps_contracted_reps_wn_writing_number_1_c 
JOIN wn_writing_number_cstm 
ON preps_contracted_reps_wn_writing_number_1_c.preps_contracted_reps_wn_writing_number_1wn_writing_number_idb = wn_writing_number_cstm.id_c 
JOIN preps_contracted_reps 
ON preps_contracted_reps_wn_writing_number_1_c.preps_cont9effed_reps_ida = preps_contracted_reps.id 
WHERE 
preps_contracted_reps.id IN 
(SELECT 
preps_contracted_reps.id 
FROM 
leads_wn_writing_number_1_c 
JOIN wn_writing_number 
ON leads_wn_writing_number_1_c.leads_wn_writing_number_1wn_writing_number_idb = wn_writing_number.id 
JOIN leads_cstm 
ON leads_wn_writing_number_1_c.leads_wn_writing_number_1leads_ida = leads_cstm.id_c 
RIGHT JOIN leads 
ON leads.id = leads_cstm.id_c 
JOIN wn_writing_number_cstm 
ON wn_writing_number.id = wn_writing_number_cstm.id_c 
JOIN preps_contracted_reps_wn_writing_number_1_c 
ON preps_contracted_reps_wn_writing_number_1_c.preps_contracted_reps_wn_writing_number_1wn_writing_number_idb = wn_writing_number_cstm.wn_writing_number_id_c 
JOIN preps_contracted_reps 
ON preps_contracted_reps_wn_writing_number_1_c.preps_cont9effed_reps_ida = preps_contracted_reps.id 
WHERE 
leads.deleted = '0' 
GROUP BY 
leads.id) 
GROUP BY 
preps_contracted_reps.id 

EDIT:改訂された文を含めるようにこの質問を更新しました。最初のステートメントは、私が提案したエイリアスを使ってそれらを結合しようとすると、何も返されません。

+1

使用エイリアス.....の – Pred

+0

可能な重複[mysqlのエラー1066](http://stackoverflow.com/questions/13711291/mysql-error-1066)の別名提案と – Pred

+0

更新答え、わかりません私が間違ってやっていることですが、このJOINを使用すると、結果は返されません(エラーはありません)。 この質問は、テーブル名をエイリアスする方法とは関係ありませんが、既に結合されたテーブルでの結合に関連する正しい構文です。 –

答えて

0

Predのエイリアスの提案を使用して、1つ以上のテーブルに別名を付ける必要があることがわかりました。私は、データを取得したいテーブルに加えて、リレーションシップテーブルを再度エイリアスする必要がありました。

SELECT 
leads.id, 
leads.date_entered, 
leads.date_modified, 
leads.first_name, 
leads.last_name, 
leads.primary_address_state, 
leads.converted, 
leads.`status`, 
leads.lead_source, 
leads_cstm.territory_c, 
leads_cstm.contact_status_c, 
leads_cstm.campaign_id_c, 
leads_cstm.industry_c, 
leads_cstm.contract_type_c, 
leads_cstm.recruiting_link_sent_c, 
preps_contracted_reps.first_name AS rep_first_name, 
preps_contracted_reps.last_name AS rep_last_name, 
upline_table.title_c 
FROM 
leads_wn_writing_number_1_c 
JOIN wn_writing_number 
ON leads_wn_writing_number_1_c.leads_wn_writing_number_1wn_writing_number_idb = wn_writing_number.id 
JOIN leads_cstm 
ON leads_wn_writing_number_1_c.leads_wn_writing_number_1leads_ida = leads_cstm.id_c 
RIGHT JOIN leads 
ON leads.id = leads_cstm.id_c 
JOIN wn_writing_number_cstm 
ON wn_writing_number.id = wn_writing_number_cstm.id_c 
JOIN preps_contracted_reps_wn_writing_number_1_c 
ON preps_contracted_reps_wn_writing_number_1_c.preps_contracted_reps_wn_writing_number_1wn_writing_number_idb = wn_writing_number_cstm.wn_writing_number_id_c 
JOIN preps_contracted_reps 
ON preps_contracted_reps_wn_writing_number_1_c.preps_cont9effed_reps_ida = preps_contracted_reps.id 
JOIN preps_contracted_reps_wn_writing_number_1_c AS upline_relationship 
ON preps_contracted_reps.id = upline_relationship.preps_cont9effed_reps_ida 
JOIN wn_writing_number_cstm AS upline_table 
ON upline_relationship.preps_contracted_reps_wn_writing_number_1wn_writing_number_idb = upline_table.id_c 
WHERE 
leads.deleted = '0' 
GROUP BY 
leads.id 
関連する問題