我有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_car1
和desc_car2
?
答案 0 :(得分:1)
理想情况下,应该有第三个 junction 表,该表保留了用户与汽车之间的关系。如果您希望文字查询在没有这样的表的情况下生成上述输出,那么我们将不得不在car
和user
之间使用交叉联接,因为不存在其他关系:
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;
答案 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;