我希望有人能提供帮助,我已经拖网几个小时了,找不到能满足我需要的答案(至少我看不出答案如何适用于我的情况)
所以我有3张桌子,马,所有者和马主
Table: horses
ID Name age
1 arkle 3
2 shergar 4
3 daisy 2
Table: owners
ID Name
1 Joe
2 Jack
3 Susan
4 Mike
Table: horse_owners
owner_id horse_id
1 1
2 1
3 1
4 2
还有其他领域,但为了简单起见,我删除了它们。 我想运行一个列出马匹及其所有者(如果有的话)的查询。
这就是我现在所拥有的:
SELECT
h.id,
h.name,
h.age
GROUP_CONCAT(o.name separator ', ') as owners
FROM
horses h
LEFT JOIN
horse_owners ho
ON
h.id = ho.horse_id
LEFT JOIN
owners o
ON
ho.owner_id = o.id
我正在使用group_concat函数来组合所有者名称,其中一些人拥有多个所有者。但问题是查询只返回拥有所有者的马。我希望看到所有马匹是否拥有所有者。
答案 0 :(得分:3)
select
h.id,
h.name,
h.age,
coalesce(group_concat(o.name order by o.name separator ', '),'Nobody') as owners
from
horses h
left join
horse_owners ho
on
h.id = ho.horse_id
left join
owners o
on
ho.owner_id = o.id
group by h.id
答案 1 :(得分:0)
SELECT h.id, h.name, h.age, GROUP_CONCAT(o.name separator ', ') as owners FROM horses h LEFT JOIN horse_owners ho ON (h.id = ho.horse_id) LEFT JOIN owners o ON (ho.owner_id = o.id)