0

我有 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 

不工作

4

2 回答 2

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
于 2013-10-23T22:02:49.657 回答
0

像这样做:

SELECT pr.* FROM product pr, link lk 
WHERE pr.id = lk.product_id 
AND lk.feature_id IN ( 1, 2, 3)
with ur; 
于 2013-12-20T19:03:38.927 回答