我有两张桌子,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
我如何在上面的输出中得到它,其中athere是每个标题的一行,并且所有区域都列在该行中?
最佳答案
一个快速的替代解决方案可以是将所有领土聚集在一个列中:
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
通常很容易在应用程序中拆分结果。但如果你真的想要一个支点。
关于您的标题,不需要在这里使用外部连接,除非您不确定标题是否有受影响的区域。在这种情况下,请改用
LEFT JOIN
。关于mysql - 难以在SQL中枢轴,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16491445/