sql查询问题,一个标签表,产品表和标签关联表,多对多的关系,怎么在标签关联表里查询同时关联多个标签的产品?
比如有标签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查询出来?

解决方案 »

  1.   

    /*
    sql查询问题,一个标签表,产品表和标签关联表,多对多的关系,怎么在标签关联表里查询同时关联多个标签的产品?
    比如有标签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查询出来?
    */
    use tempdb
    go
    --标签表
    create table biaoqian
    (
    name char(10)
    )--产品表
    create table product
    (
    name char(10),
    value int
    )--标签关联表
    create table bandp
    (
    bname char(10),
    pname char(10)
    )--插入测试数据
    insert into biaoqian values('A')
    insert into biaoqian values('B')
    insert into biaoqian values('C')
    insert into product values('1',1)
    insert into product values('2',1)
    insert into product values('3',1)
    insert into product values('4',1)
    insert into bandp values('A',1)
    insert into bandp values('A',2)
    insert into bandp values('A',3)
    insert into bandp values('B',2)
    insert into bandp values('B',3)
    insert into bandp values('C',4)
    insert into bandp values('C',2)
    insert into bandp values('C',3)select * from product where name in (
    select pname from bandp group by pname having count(1) =(select count(1) from biaoqian))你的问题可以转换为,查询关联表中,包含所有标签的某些产品的详细信息,如果你看不懂我的代码你再提问