sql在一张表上获取描述2列

时间:2018-10-18 02:49:41

标签: mysql sql

我有2张桌子:

汽车

ID    Desc
1     BMW
2     Audi

用户

ID   Name    ID_car1     ID_car2
1    Jack       1           2

数据视图

ID    Name   ID_car1   Desc_car1    ID_car2    Desc_car2
1     Jack      1          BMW        2           Audi

如何查询在数据视图上显示desc_car1desc_car2

2 个答案:

答案 0 :(得分:1)

理想情况下,应该有第三个 junction 表,该表保留了用户与汽车之间的关系。如果您希望文字查询在没有这样的表的情况下生成上述输出,那么我们将不得不在caruser之间使用交叉联接,因为不存在其他关系:

SELECT
    u.ID,
    u.Name,
    MAX(CASE WHEN c.ID = 1 THEN c.ID END) AS ID_car1,
    MAX(CASE WHEN c.ID = 1 THEN c.`Desc` END) AS Desc_car1,
    MAX(CASE WHEN c.ID = 2 THEN c.ID END) AS ID_car2,
    MAX(CASE WHEN c.ID = 2 THEN c.`Desc` END) AS Desc_car2
FROM car c
CROSS JOIN user u
GROUP BY
    u.ID,
    u.Name;

enter image description here

Demo

答案 1 :(得分:0)

使用您的最新信息,我们可以使用查询来获取数据视图,如下所示:

select u.ID, u.Name,
  u.ID_car1, c1.Desc Desc_car1,
  u.ID_car2, c2.Desc Desc_car2
from user u
  join car c1 on u.ID_car1=c1.ID
  join car c2 on u.ID_car2=c2.ID;