2017-07-12 17 views
-1

私はSQLクエリがあります。SQLのないユニークなテーブル/エイリアス

SELECT leads.lead_id, 
     attributes.code  AS attributeCode, 
     leads_notes.content AS noteContent, 
     leads_notes.task_type_id, 
     task_types.type_name 
FROM leads, 
     leads_notes 
     INNER JOIN task_types 
       ON task_types.task_type_id = leads_notes.task_type_id 
     INNER JOIN leads_attributes 
       ON leads_attributes.lead_id = leads.lead_id 
     INNER JOIN attributes 
       ON attributes.attribute_id = leads_attributes.attribute_id 
     INNER JOIN leads_notes 
       ON leads_notes.lead_id = leads.lead_id 
WHERE (leads.ambassador = 1 
      OR leads.rents_bike = 1) 
     AND (leads.city <> '') 
     AND (leads.address <> '' 
       OR leads.address2 <> '') 
     AND (leads.country_id <> '') 
     AND (leads_attributes.attribute_id IN ($attributes_id)) 
     AND (leads.lead_id = $lead_id) 

をしかし、私はエラーを取得する:

Syntax error or access violation: 1066 Not unique table/alias: 'leads_notes''

どのように私はそれを解決することができますか?ありがとう。

+0

コンマ区切りの表と明示的な結合を混用しないでください。混乱するだけです。 (その参加条件はどこですか?) – jarlh

+0

'leads_notes'はそこに何も参加していません。あなたが最後に同じテーブルに参加したので本当に必要ですか?それもエラーを説明します –

答えて

0

は、FROM句にカンマを使用します。 常には、適切で明示的なJOIN構文を使用します。

FROM句にはlead_notesが2回あります。あなたがテーブルの別名を使用する場合、クエリを読み書きするために簡単です:

SELECT l.lead_id, a.code as attributeCode, ln.content as noteContent, ln.task_type_id, tt.type_name 
FROM leads l JOIN 
    leads_notes ln 
    ON ln.lead_id = l.lead_id JOIN 
    task_types tt 
    ON tt.task_type_id = ln.task_type_id JOIN 
    leads_attributes la 
    ON la.lead_id = l.lead_id JOIN 
    attributes a 
    ON a.attribute_id = la.attribute_id 
WHERE (l.ambassador=1 OR l.rents_bike=1) AND 
     (l.city <> '') AND 
     (l.address <>'' OR l.address2 <>'') AND 
     (l.country_id <> '') AND 
     (la.attribute_id IN ($attributes_id)) AND 
     (l.lead_id = $lead_id); 
0

あなたは二重のleads_notesテーブルを追加しています:leadsテーブルとinner joinで別の後に1を、そう1は

を、以下のようなあなたの問題を解決削除します
SELECT leads.lead_id, 
     attributes.code  AS attributeCode, 
     leads_notes.content AS noteContent, 
     leads_notes.task_type_id, 
     task_types.type_name 
FROM leads 
     INNER JOIN task_types 
       ON task_types.task_type_id = leads_notes.task_type_id 
     INNER JOIN leads_attributes 
       ON leads_attributes.lead_id = leads.lead_id 
     INNER JOIN attributes 
       ON attributes.attribute_id = leads_attributes.attribute_id 
     INNER JOIN leads_notes 
       ON leads_notes.lead_id = leads.lead_id 
WHERE (leads.ambassador = 1 
      OR leads.rents_bike = 1) 
     AND (leads.city <> '') 
     AND (leads.address <> '' 
       OR leads.address2 <> '') 
     AND (leads.country_id <> '') 
     AND (leads_attributes.attribute_id IN ($attributes_id)) 
     AND (leads.lead_id = $lead_id) 
+0

私はerrrorを持っています:列が見つかりません:1054不明な列 'on節'の 'leads_notes.task_type_id' ' –

+0

'leads_notes'テーブルのあなたの列は何ですか? –

+0

task_type_id列があります –

関連する問題