sql查询问题,一个标签表和产品表,多对多的关系,怎么查询同时关联多个标签的产品集合?

比如有标签A,B,C,A关联产品1、2、3,B关联2、3,C关联2、3、4,怎查询出同时关联了ABC的产品?
比如有标签A,B,C,产品1,2,3,4,A关联1、2、3,B关联2、3,C关联2、3、4,
标签关联表,包括标签ID和产品ID两个字段,记录标签和产品的关联,比如
A 1,A 2,A 3,B 2,B 3,C 2,C 3,C 4,标签ABC都关联了产品2,如何通过Sql语句把这个同时关联了标签ABC的产品2查询出来?

查询这个比较简单使用DISTINCT,只要把两张表联给在一起,它可以让产品只显示一次不重复
select DISTINCT 产品 from 标签表,产品表 where 关连条件.....
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-08-11
用匹配查询,把标签表和查品表完全匹配,产品ID和标签ID是不是一个属性?语句如下:
Select * From 产品表 Inner Join 标签表 on 产品表.产品ID=标签表.标签ID Where 产品表.ID IS NOT NULL;
意思是把产品表和标签表里面ID字段完全对应地匹配起来,放在一个表里,这句要求你产品ID和标签ID一样,如果不一样,最起码要有点关系。比如:
表1:
ID | 字段1
----------------------
0152401 | 0000
-------------------------
0152302 | 5555
--------------------------
表2:
ID | 字段1
----------------------
52401 | 0000
-------------------------
52302 | 5555
--------------------------
表2.ID和表1.ID的关系就是:
right(表1.ID,5)=表2.ID
我相信你两个表之间一定有一个字段有关系,那就用取位函数来实现匹配吧 。
不重复出现相同的行,(要完全相同的行)就在SELECT 后面加个关键字
Distinct
语法:
Select Distinct 字段 From 表名;本回答被提问者采纳
第2个回答  2012-08-11
select 产品名1,2,3,4
from 表1 join 表二 on 表1.列名=表二.列名 join 表三 on 表1.列名=表三.列名....
相似回答