我在3个表中命名了产品,属性和关系表product_attributes。您可以通过下面的示例条目查看它们。
products id| product_name 1 | Product 1 2 | Product 2attributes id| attribute 1 | length 2 | width 3 | height 4 | weight 5 | color
product_attributes id| product_id| attribute_id| value 1 | 1 | 1 | 120 2 | 1 | 2 | 60 3 | 2 | 1 | 100 4 | 2 | 3 | 40 5 | 2 | 5 | red
显示产品详细信息:
产品1 长度:120 宽度:60
产品1的未链接属性:
身高,体重,颜色
产品2 长度:100 身高:40 颜色:红色
产品2的未链接属性:
宽度,重量
我想要做的事情主要是,当我选择产品时,获取未链接的属性。 例如,当我选择产品1时,sql将返回 身高,体重,颜色
我知道可以用PHP完成它,但也知道它也可以用SQL完成。 我只是想集思广益。
如何使用SQL完成?特别是在MySQL?
答案 0 :(得分:0)
我不认为这是最好的方式,但它应该有用。
SELECT attribute FROM attributes
WHERE id NOT IN (
SELECT attribute_id FROM product_attributes
WHERE product_id = '1')
答案 1 :(得分:0)
要获取指定产品的不存在的属性,我认为您应该使用此查询, 请注意,如果没有内部选择查询,此查询将获取不用于任何产品的属性。
SELECT attribute FROM attributes a
LEFT JOIN (SELECT * FROM product_attributes pa WHERE pa.product_id = 1 ) pa ON a.id = pa.id
WHERE pa.id IS NULL