我有两张桌子:
我想选择所有带颜色的产品。
id product_name color_1(id) color_2(id) color_3(id)
--------------------------------------------------------
1 Apple 1 2 3
2 Table 2 3 0
id color
---------
0 False
1 Blue
2 Green
3 Yellow
我想进入一个查询:
1 Apple Blue Green Yellow
2 Table Green Yellow False
答案 0 :(得分:4)
使用内部联接。
SELECT p.product_name, c1.color, c2.color, c3.color
FROM Products p
INNER JOIN Colors c1 ON c1.id = p.color_1
INNER JOIN Colors c2 ON c2.id = p.color_2
INNER JOIN Colors c3 ON c3.id = p.color_3
根据您的评论:
如果您想在某些产品颜色ID不适用的情况下获得结果,请切换到LEFT OUTER JOIN。这不会过滤掉记录,如果没有要连接的值,则simple会为所有列返回NULL。
SELECT p.product_name, c1.color, c2.color, c3.color
FROM Products p
LEFT OUTER JOIN Colors c1 ON c1.id = p.color_1
LEFT OUTER JOIN Colors c2 ON c2.id = p.color_2
LEFT OUTER JOIN Colors c3 ON c3.id = p.color_3
答案 1 :(得分:1)
这应该有效:
select p.id, p.product_name, c1.color, c2.color, c3.color
from products p, colors c1, colors c2, colors c3
where c1.id=p.color_1 and
c2.id=p.color_2 and
c3.id=p.color_3
答案 2 :(得分:0)
试试这个:
select p.id, p.product_name, c1.color color_1, c2.color color_2, c3.color color_3
from products p
join colors c1 on p.color_1 = c1.id
join colors c2 on p.color_2 = c2.id
join colors c3 on p.color_3 = c3.id
您只需要在每个字段上建立连接以获得适当的颜色。