115.150.91.247求一段SQL的统计代码写法?A表:ID 名称 价格 商家   
1 aa 3 商家1
2 bb 5 商家2
3 cc 7 商家1
4 ee 6 商家2
B表:
ID 名称 价格 商家  
3 cc 7 商家1
2 bb 5 商家2
1 aa 3 商家1
4 ee 6 商家2
1 aa 3 商家1
2 bb 5 商家2
3 cc 7 商家1
3 cc 7 商家1目的:从A表取出所有的商家是商家1的记录,并从B表统计出商家是商家1,且和A表记录相同的记录次数统计,查询显示成新的数据,说着麻烦,大家可以看看例子,形成象下面的统计,如:
商家1:
ID 名称 价格 统计
1  aa    3    2
3  cc    7    3这个SQL怎么写?

解决方案 »

  1.   

    select a.ID,a.名称,a.价格,b.统计
    from TableA a join (select ID,名称,价格,count(*) as 统计 from TableB where 商家='商家1' group by ID,名称,价格) b on a.ID=b.ID and a.名称=b.名称 and a.价格=b.价格
    where a.商家='商家1'
      

  2.   

    CREATE TABLE A
    (
    ID INT,
    名称 VARCHAR(10),
    价格 INT,
    商家 VARCHAR(10)
    )
    INSERT INTO A
    SELECT    
    1, 'aa', 3, '商家1' UNION ALL SELECT
    2, 'bb', 5, '商家2' UNION ALL SELECT
    3, 'cc', 7, '商家1' UNION ALL SELECT
    4, 'ee', 6, '商家2'CREATE TABLE B
    (
    ID INT,
    名称 VARCHAR(10),
    价格 INT,
    商家 VARCHAR(10)
    )
    INSERT INTO B   
    SELECT
    3, 'cc', 7, '商家1' UNION ALL SELECT
    2, 'bb', 5 ,'商家2' UNION ALL SELECT
    1, 'aa', 3 ,'商家1' UNION ALL SELECT
    4, 'ee', 6 ,'商家2' UNION ALL SELECT
    1, 'aa', 3 ,'商家1' UNION ALL SELECT
    2, 'bb', 5 ,'商家2' UNION ALL SELECT
    3, 'cc', 7 ,'商家1' UNION ALL SELECT
    3, 'cc', 7 ,'商家1'DECLARE @con VARCHAR(10)
    SET @con='商家1'
    SELECT A.ID,A.名称,A.价格,统计=COUNT(1) FROM A INNER JOIN B ON A.ID=B.ID WHERE A.商家=@con GROUP BY A.ID,A.名称,A.价格
    /*
    ID          名称         价格          统计
    ----------- ---------- ----------- -----------
    1           aa         3           2
    3           cc         7           3(2 行受影响)
    */
      

  3.   

    不过改成这样更好
    select a.ID,a.名称,a.价格,isnull(b.统计,0) as 统计
    from TableA a left join (select ID,名称,价格,count(*) as 统计 from TableB where 商家='商家1' group by ID,名称,价格) b on a.ID=b.ID and a.名称=b.名称 and a.价格=b.价格
    where a.商家='商家1'等于0也可以查出来
      

  4.   

    直接inner 或 left join 一下就OK
    select a.ID,a.名稱,a.價格,isnull(b.統計,0) as 統計
    from TableA a left join (select ID,名稱,價格,count(*) as 統計 from TableB where 商家='商家1' group by ID,名稱,價格) b on a.ID=b.ID and a.名稱=b.名稱 and a.價格=b.價格
    where a.商家='商家1'