用于选择正确数据的SQL问题

时间:2013-06-07 22:53:08

标签: sql

我有以下代码

$sql = <<<SQL
SELECT kit_color.color_id, color.color_name FROM kit_color
LEFT JOIN color ON kit_color.color_id = color.color_id
WHERE kit_color.id = %s
SQL;
return sprintf($sql, self::quote($id));

表数据类似于

Table  "product_color"
Column1 "color_id"
Column2 "product_id"

Table "kit_color"
Column1 "id"
Column2 "color_id"

Table "color"
Column1 "color_id"
Column2 "color_name"

示例数据

product_color, as-1, 86501

我可以使用color_id,但我需要显示product_id的{​​{1}}。我怎么能这样做?

我添加了另一张表。使用上面的代码,一切正常我只能显示product_color.product_id,因为它似乎没有被拉出信息。

3 个答案:

答案 0 :(得分:2)

你可以这样做:

SELECT PC.product_id, KC.color_id, C.color_name 
FROM kit_color as KC
LEFT JOIN color as C
ON KC.color_id = C.color_id
LEFT JOIN product_color as PC
ON PC.color_id = C.color_id
WHERE KC.id = %s

答案 1 :(得分:0)

我想你想要这个...

SELECT product_color.product_id, kit_color.color_id, color.color_name FROM kit_color
LEFT JOIN color ON kit_color.color_id = color.color_id
LEFT JOIN product_color ON product_color.color_id = color.color_id
WHERE kit_color.id = %s

答案 2 :(得分:0)

您的陈述不包括选择部分中的product_id。它也与所描述的表数据不匹配。使用您提供的表数据,如果您有kit_color.id,那么您应该能够像这样获得product_id:

SELECT product_color.product_id 
FROM kit_color 
JOIN product_color ON   
kit_color.color_id=product_color.color_id 
WHERE kit_color.id=[the_id_you_have]