SQL - ID行,获取已加入的数据

时间:2014-10-05 20:23:11

标签: mysql sql

我有一个表格garages,结构如下:

garageid | car1 | car2 | car3

carN字段包含来自另一个表cars的ID:

carN | make | color

有没有办法在单个查询中获取特定车库的颜色列表?

结果将是:

garageid | color1 | color2 | color3

我意识到这种结构没有规范化,但汽车的数量永远不会改变。有没有办法做到这一点?

2 个答案:

答案 0 :(得分:3)

使用id存储多个列通常不是一个好方法。每辆车最好有一排。也就是说,您可以使用多个连接执行您想要的操作:

select g.garageid, c1.color as color1, c2.color as color2, c3.color as color3
from garages g left join
     cars c1
     on g.car1 = c1.carid left join
     cars c2
     on g.car2 = c2.carid left join
     cars c3
     on g.car3 = c3.carid;

即使一个或多个车辆ID为left joingarage仍会返回NULL

答案 1 :(得分:0)

在我看来,最好有一张桌子t_garage_cars:

garageId carId

以这种方式回溯数据很简单。

如果由于某种原因这是不可能的,我相信你只能使用游标可以使用临时表