A表:出售店名         商品名
———————————
店A              商品A
店A              商品B
店A              商品C
店A              商品D
店A              商品E
店B              商品A
店B              商品B
店B              商品C
店B              商品F
店B              商品GB表:
商品名        产地
———————————
商品A         A国
商品B         A国
商品C         A国
商品D         B国
商品E         B国
商品F         B国
商品F         A国想统计店A出售的产地是A国的商品总数,如何统计?我用JOIN,得出的结果总会吧店B的商品是A国的也算到A店里

解决方案 »

  1.   

    select count(*) from 表A inner join 表B on a.商品名=b.商品名
    where 表A.出售店名='店A' and 表B.产地='A国'
      

  2.   

    select a.出售店名, cnt = COUNT(*) from 
    A表 a, B表 b
    where a.商品名 = b.商品名 and a.出售店名 = '店A' and b.产地 = 'A国'
    group by a.出售店名
      

  3.   

    create table A表(出售店名 nvarchar(10),商品名 nvarchar(10))
    insert into A表 select '店A','商品A'
    insert into A表 select '店A','商品B'
    insert into A表 select '店A','商品C'
    insert into A表 select '店A','商品D'
    insert into A表 select '店A','商品E'
    insert into A表 select '店B','商品A'
    insert into A表 select '店B','商品B'
    insert into A表 select '店B','商品C'
    insert into A表 select '店B','商品F'
    insert into A表 select '店B','商品G'
    CREATE TABLE B表(商品名 nvarchar(10),产地 nvarchar(10))
    insert into B表 select '商品A','A国'
    insert into B表 select '商品B','A国'
    insert into B表 select '商品C','A国'
    insert into B表 select '商品D','B国'
    insert into B表 select '商品E','B国'
    insert into B表 select '商品F','B国'
    insert into B表 select '商品F','A国'
    go
    select count(*) from A表 inner join B表 on A表.商品名=B表.商品名
    where A表.出售店名='店A' and B表.产地='A国'
    go
    drop table A表,B表
    /*
    -----------
    3(1 行受影响)
    */