我有一个简单的两个很多关系。
有三个表
主:
ID TITLE
________
1 Peter
2 Lars
订单:
SKU MAIN_ID
___________
RFX 1
HNI 2
RRP 2
工具:
NAME MAIN_ID
____________
FORK 1
KNIFE 1
SPOON 2
所以订单和工具有一个MAIN_ID
引用主表。
所以Peter有订单RFX和工具FORK和SPOON
Lars有订单HNI和RRP以及工具SPOON。
我如何进行单一查询以找出彼得有哪些订单和工具以及哪些订单和工具有? 我尝试使用内连接但是有重复的条目。
答案 0 :(得分:2)
您可能希望使用group_concat()
来获取一行中的值。但是,您需要在join
:
select m.*, o.skus, t.tools
from main m join
(select main_id, group_concat(sku) as skus
from orders
group by main_id
) o
on o.main_id = m.id join
(select main_id, group_concat(name) as tools
from tools
group by main_id
) t
on t.main_id = m.id;