我有两个表,颜色和子产品
SubProductId SubProductColor1 SubProductColor2
1 1 4
2 2 3
ColorId ColorName ColorHex ColorCategory
1 color1 303030 0
2 color2 f3f3f3 0
3 color3 dcdcdc 1
4 color4 ededed 1
在SubProductColor1和SubProductColor2中,我保存了ColorId。
SubProductColor1是ColorCategory 0。
SubProductColor2是ColorCategory 1。
我明白了:
SELECT *
FROM SubProducts
INNER JOIN Colors
ON Colors.ColorId=SubProducts.SubProductColor1
WHERE ProductId='$product_id'
但这仅适用于一种颜色。
我想在单个查询中获取两种颜色的ColorHex。
<小时/> 例如,我想要这个输出:
Id = 1
第一种颜色= 303030
第一个颜色名称= color1
第二种颜色= ededed
第二个颜色名称= color4
Id = 2
第一种颜色= f3f3f3
第一个颜色名称= color2
第二颜色= dcdcdc
第二个颜色名称= color3
有什么想法吗?
提前致谢并抱歉我的英语:)
答案 0 :(得分:2)
从查询中删除WHERE
条件
SELECT *
FROM SubProducts
INNER JOIN Colors
ON Colors.ColorId=SubProducts.SubProductColor1
修改强>
SELECT *
FROM SubProducts,Colors
WHERE (Colors.ColorId = SubProducts.SubProductColor1 OR Colors.ColorId = SubProducts.SubProductColor2)
AND ProductId='$product_id'
GROUP BY Colors.ColorName
答案 1 :(得分:1)
这应该有效
SELECT a.SubProductId , a.ColorHex color1, a.ColorName color1name, c.ColorHex color2, c.ColorName color2name
from (select * FROM SubProducts
JOIN Colors
ON Colors.ColorId = SubProducts.SubProductColor1 ) a
JOIN colors c
ON c.ColorId = a.SubProductColor2
Where SubProductId='$product_id'
答案 2 :(得分:1)
SELECT s.subproductid
, c1.colorhex first_color
, c1.colorname first_colorname
, c2.colorhex second_color
, c2.colorname second_colorname
FROM subproducts s
JOIN colors c1
ON c1.colorid = s.subproductcolor1
JOIN colors c2
ON c2.colorid = s.subproductcolor2
ORDER
BY subproductid;
php循环可能看起来像这样 - 虽然显然你是使用现代方法而不是这里显示的弃用的mysql_方法...
while($row = mysql_fetch_assoc($result)){
echo "id = ".$row['subproductid']."<br>\n
1st color = ".$row['first_color']."<br>\n
1st color name = ".$row['first_colorname']."<br>\n
2nd color = ".$row['second_color']."<br>\n
2nd color name = ".$row['second_colorname']."<br>\n
";
}
...请注意,您并不仅限于&#39;而且&#39;。其他类型的循环也可以正常工作(例如($ i = 0; $ i)
答案 3 :(得分:1)
尝试这个..
SELECT SubProductID, c1.ColorHex as Color1,c1.ColorName as ColorName1,c2.ColorHex as Color2,c2.ColorName as ColorName2
FROM SubProducts INNER JOIN
Colors c1 ON c1.ColorId=SubProducts.SubProductColor1 INNER JOIN
Colors c2 ON c2.ColorId=SubProducts.SubProductColor2 INNER JOIN
WHERE ProductId='$product_id'