我有两张桌子,titleterritory。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/

10-11 17:33