共有3个表:item
,grp
和grp_rel
。
item
表:
item_id title
grp
表:
grp_id title
grp_rel
表:
grp_id item_id
表格中的数据(item
表):项目标题为varchar(255), not unique
1 item-a
2 item-b
3 title-c
4 item-d
5 title-c
6 value-e
7 value-e
表格中的数据(grp
表):grp title
为varchar(255), not unique
。
1 title
2 value
表格中的数据(grp_rel
表):
1 3
1 5
2 6
2 7
预期的sql结果是(按项目标题排序):
item_id grp_id title grp_title
1 NULL item-a NULL
2 NULL item-b NULL
3 1 title-c title
4 NULL item-d NULL
6 2 value-e value
答案 0 :(得分:0)
您可以使用此代码
SELECT MIN(it.item_id) as item_id,MIN(gr.grp_id) as grp_id,it.title,gr.title
FROM item it
left join grp_rel gl on it.item_id=gl.item_id
left join grp gr on gl.grp_id=gr.grp_id
GROUP BY it.title,gr.title
ORDER BY it.title
答案 1 :(得分:0)
简单left join
将为您完成工作。
SELECT
I.item_id,
G.grp_id,
I.title,
G.title
FROM
item I
LEFT JOIN
grp_rel GR
ON GR.item_id = I.item_id
LEFT JOIN
grp G
ON G.grp_id = GR.grp_id
ORDER BY
I.title