2012-01-09 99 views
1

嘿傢伙對不起,但我需要幫助這個查詢請我一直在搞不同的解決方案,但迄今還沒有能夠解決它自己。一對多mysql查詢

我有4個表,分別叫做customer,figures,noteslender。他們都有一個名爲reference的字段,這是我用來將它們連接在一起的字段。客戶是企業的主表,並且只有一個在數字表中的每個客戶記錄,所以我可以做的:

select * From customer, figures 
where customer.reference = figures.reference 

然而,也有可能是爲每一個客戶多個音符和貸款記錄。我如何鏈接它們以顯示只有一條記錄?

理想情況下,將顯示它的方式:

reference, name, figures, lender 1, lender 2, note 1, note 2, note 3 
+0

聽起來像是CTE給我的作品 – Alex 2012-01-09 10:57:24

回答

1

您可以使用group_concat()

SELECT customer.reference, customer.name, figures.name, 
GROUP_CONCAT(DISTINCT lender.name), 
GROUP_CONCAT(DISTINCT notes.name) 
FROM customer 
JOIN figures ON figures.reference = customer.reference 
LEFT JOIN lender ON lender.reference = customer.reference 
LEFT JOIN notes ON notes.reference = customer.reference 
GROUP BY customer.reference; 

假定每個表都有一個字段name,你應該改變它無論你的列是什麼。