2012-01-09 71 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,你应该改变它无论你的列是什么。