嗨,我有数据库,包括表:products,product_colors,colors。
产品具有属性: id,name,...
Product_colors 具有以下属性: id,products_id,colors_id
颜色具有属性: id,colors_id,name
因此,Product产品颜色中的行由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
红 - >闪光,橙色
绿色 - >猕猴桃,浅绿色,深绿色
如果参数颜色为红色和浅绿色,则如何获得包含所有父颜色(作为参数)的所有产品 - >比选定的产品应该具有红色和绿色的颜色
所以我需要得到参数的父颜色(如果参数没有父我参数颜色),这个父颜色通过这个数组使用IN选择产品给数组a。 我想在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 :(得分:0)
解决方案将涉及再次重新加入COLORS表,以获取父颜色数据。
如果你有另外一个这样的连接:
LEFT JOIN colors PARENT_COLOR ON colors.colors_id = PARENT_COLOR.id
然后您可以使用此PARENT_COLOR表来显示或过滤此表中的结果。