2016-11-27 69 views
0

您好我有與數據庫表:產品,product_colors,顏色。SQL如何選擇參數的父ID或ID(如果沒有父)

產品有屬性:ID,姓名,...

Product_colors有屬性:ID,products_id,colors_id

顏色有屬性:ID,colors_id ,名稱

因此,產品有行中產品的顏色由products.id = product_colors.products_id 和未來連接加入跨product_colors.colors_id = colors.id

產品以colors_id:

id  name 
------------------- 
1  produkt1 
2  produkt2 
3  produkt3 

Product_colors:

id  products_id  colors_id 
1  1    1 
2  1    5 
3  2    1 
4  2    3 
5  3    6 

顏色可以包含colors_id的父代:

id  colors_id  name 
__________________________________ 
1  null   red 
2  null   green 
3  1    flashred 
4  2    kiwi 
5  2    lightgreen 
6  null   black 

紅 - > flashred,橙色

綠色 - >獼猴桃,淺綠,深綠

我怎樣才能得到它包含了所有家長的顏色(如parametr)所有的產品,如果參數的顏色是紅色,淺綠 - >比選定的產品應該有顏色紅色和綠色正好

所以我需要得到參數顏色的父(如果參數沒有父我採取參數顏色),這種父母的顏色給這個數組一個選擇產品的數組。 我想這MYSQL

SELECT products.id AS id 
     FROM products 
     LEFT JOIN product_colors 
      ON products.id = product_colors.products_id 
     LEFT JOIN colors 
      ON product_colors.colors_id = colors.id 
     WHERE colors.id IN (1,5) 

1,5有觀點

對於參數[1,5]我想要得到的結果與產品ID爲1

+0

查看COALESCE()。 – Strawberry

+0

請分享預期結果。 –

+0

Kumar_Vikas是我添加了示例表,我想要參數顏色:1,5獲取產品ID爲1 – Petr

回答

0

該解決方案將涉及再重新加入到COLORS表格,以獲得父級顏色數據。

如果您有其他加入這樣的:

LEFT JOIN colors PARENT_COLOR ON colors.colors_id = PARENT_COLOR.id 

然後你就可以使用這個PARENT_COLOR表以顯示或從該表中篩選結果。