1

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

我如何在上面的输出中得到它,每个标题只有一行,并且所有地区都列在该行中?

4

1 回答 1

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

之后在您的应用程序中拆分结果通常很容易。但是,如果你真的想要一个支点,你就必须很棘手

关于您的标题,除非您不确定标题是否受到影响,否则无需在此处使用外部连接。在这种情况下,请改用 a LEFT JOIN

于 2013-05-10T22:11:30.840 回答