我有表product
ID int
name nvarchar()
dummy data: (1,'car'), (2,'bike')
我有表parameters
ID int
name nvarchar()
dummy data: (1,'abs'), (2,'audio'), (3,'eps'), (4,'air conditioning')
最后我有n:m table product_parameters
,其中包含有关产品参数的信息。
ID int
id_product int
id_parameter int
dummy data:
(id,product,parameter)
(1, 1, 1),
(2, 1, 2),
(3, 1, 3),
(4, 2, 1)
如何创建选择:
有可能吗?
更新
我只创建了3个参数但是把它想象成无限数量,无论是10,20或30还是更多...基本上有一种方法可以建立选择,以便在需要时查询一个参数或20参数如果需要。
答案 0 :(得分:0)
首先:
SELECT * FROM product PR
JOIN product_parameters PP ON PR.ID=PP.id_product
JOIN parameters PA ON PP.id_parameter=PA.ID
第二
SELECT PR.* FROM product PR
JOIN product_parameters PP ON PR.ID=PP.id_product
JOIN parameters PA ON PP.id_parameter=PA.ID
WHERE PA.name = 'abs'
第三
SELECT PR.* FROM product PR
WHERE EXISTS (SELECT * FROM product_parameters PP JOIN parameters PA ON PP.id_parameter=PA.ID WHERE PP.id_product=PR.ID AND PA.name='abs')
AND EXISTS (SELECT * FROM product_parameters PP JOIN parameters PA ON PP.id_parameter=PA.ID WHERE PP.id_product=PR.ID AND PA.name='eps')
AND EXISTS (SELECT * FROM product_parameters PP JOIN parameters PA ON PP.id_parameter=PA.ID WHERE PP.id_product=PR.ID AND PA.name='audi')