我有3个表:产品,功能和链接表(多对多) 例如,我需要从链接表中获取所有产品,这些产品具有3个功能,id = 1,2和3
link_id | product_id | feature_id
---------------------------------
100 | 1 | 1
101 | 1 | 2
102 | 1 | 3
伙计们,编写查询的最简单方法是什么?
SELECT pr.* FROM product pr, link lk WHERE pr.id = lk.product_id
AND lk.feature_id = 1 AND lk.feature_id = 2 AND lk.feature_id = 3
不起作用
答案 0 :(得分:0)
当您检查三个不同记录的值时,您无法在所有记录上全部检查它们。
制作三个连接,一个是每个功能的链接记录:
select
pr.*
from
product pr
inner join link lk1 on pr.id = lk1.product_id and lk1.feature_id = 1
inner join link lk2 on pr.id = lk2.product_id and lk2.feature_id = 2
inner join link lk3 on pr.id = lk3.product_id and lk3.feature_id = 3
答案 1 :(得分:0)
这样做:
SELECT pr.* FROM product pr, link lk
WHERE pr.id = lk.product_id
AND lk.feature_id IN ( 1, 2, 3)
with ur;