如何解决这个SQL查询

时间:2017-12-09 05:57:59

标签: mysql sql

共有3个表:itemgrpgrp_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 titlevarchar(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

2 个答案:

答案 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

SQL Fiddle