我有两个表,title
和territory
。 Territory告诉我标题的位置:
`title`
- id
- name
`territory`
- title_id (FK)
- territory
我希望输出看起来像这样:
id name territory territory territory etc...
1 Titanic US GB FR
我目前正在进行INNER JOIN
,它为我提供了三行而不是一行:
SELECT * FROM title inner join territory on title.id = territory.title_id
我如何在上面的输出中得到它,每个标题都有一行,并且所有地区都列在该行中?
答案 0 :(得分:2)
快速替代解决方案可以是在一列中汇总所有地区:
SELECT t.id, t.name, GROUP_CONCAT(tr.territory, ',') AS `territories`
FROM title t
JOIN territory tr ON t.id = tr.title_id
GROUP BY t.id, t.name
以后通常很容易将结果拆分到您的应用程序中。但如果你真的想要一个支点you'll have to be tricky。
关于你的标题,除非你不确定标题是否受到影响,否则不需要在这里使用外部联接。在这种情况下,请改用LEFT JOIN
。