SQLite:多表连接

时间:2015-11-09 00:09:37

标签: sqlite

我有一个简单的两个很多关系。

有三个表

主:

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。

我如何进行单一查询以找出彼得有哪些订单和工具以及哪些订单和工具有? 我尝试使用内连接但是有重复的条目。

1 个答案:

答案 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;