我有三個表稱爲customers,customer_contacts,customer_sites。Mysql加入查詢與外鍵關係的三個表
客戶表:
Customer_contacts:
Customer_sites:
我想要的如果在其他兩個表中沒有相關數據,則顯示客戶數據。但是,使用我的查詢我沒有得到結果。 下面是查詢:
SELECT c.id,c.customer_code,c.customer_name,count(cs.customer_id) as count, cc.name,cc.email,cc.phone
from customers as c
left join customer_sites as cs on cs.customer_id = c.id
left join customer_contacts as cc on cc.customer_id = c.id
where cc.is_main =1 group by cc.id
結果我m到處:
但我不是所有得到只有兩行數據。如果其他表中沒有數據,我需要顯示所有數據。請提供任何建議。
將where子句移動到CC的連接。 where子句基本上消除了左連接創建的空值;使左連接像內連接一樣工作。用'和'替換'where',你很好。我也沒有列出選擇中未聚合的所有字段,因此不是組的大粉絲。所以我會將這些未彙總的字段添加到組中。 – xQbert
@xQbert:我已經做了更換,其中有和,投擲錯誤我:( – 06011991
'GROUP BY c.id ,c.customer_code ,c.customer_name ,cc.name ,cc.email ,cc.phone '以前版本的mySQL默認使用group by extensions。當前版本禁用了該功能,所以現在引擎要求您列出group by中select所有非聚合字段(除非您重新啓用該功能)但我從來沒有真正發現它的價值,因爲它給予了一個設計良好的數據庫/查詢 – xQbert