2

ブランド 1、ブランド 2、またはブランド 3 を購入するショップの数をカウントしようとしていますが、pne ショップは 1 回カウントされます。しかし、私のクエリでは、各ブランドの合計行数をカウントします。誰でも私のクエリを修正できますか?

                            --- product ---

                       id  pcode   pname   brand
                       1   123     Dalda   1
                       2   124     Habib   1
                       3   125     Sufi    2
                       4   126     Toyota  3

                       ---------SALE-----------                 
                    id  shcode  shname  pcode   pname   amount
                    1      1    A G/S    123    DALDA   1020
                    2      1    A G/S    124    HABIB   1030
                    3      2    B G/S    125    SUFI    1040
                    4      2    B G/S    123    DALDA   1020
                    5      2    B G/S    126    TOYOTA  1050
                    6      3    C G/S    123    DALDA   1020
                    7      4    D G/S    125    SUFI    1040
                    8      4    D G/S    123    DALDA   1020
                    9      4    D G/S    124    HABIB   1030
                   10      4    D G/S    126    TOYOTA  1050
                   11      5    E G/S    123    DALDA   1020
                   12      6    F G/S    125    SUFI    1040
                   13      7    G G/S    126    TOYOTA  1050


                               MY REQUIRED RESULT   
                                BRAND   Shops
                                   1    5
                                   2    3
                                   3    3

私の質問

select p.brand, count(s.shcode) AS shops
            FROM product p 
            INNER JOIN sdetail s on s.pcode = p.pcode
            GROUP BY p.brand
4

2 に答える 2

0

必要なのは、count関数のshcodeの周りの明確なものだと思います。だからこれを試してみてください:

select p.brand, count(distinct(s.shcode)) AS shops
        FROM product p 
        INNER JOIN sdetail s on s.pcode = p.pcode
        GROUP BY p.brand

これで遊ぶためのフィドルがあります。

于 2013-02-05T06:27:18.820 に答える
0
SELECT tmp.brand, count(tmp.shcode) AS shops FROM (
                                           SELECT DISTINCT temp.brand, (SELECT DISTINCT temp.shcode) AS shcode FROM (SELECT p.brand, s.shcode
                                                                FROM product p 
                                                                INNER JOIN sdetail s on s.pcode = p.pcode) AS temp
                                          ) AS tmp GROUP BY tmp.brand

ロジック:2つのテーブルに参加し、個別のショップブランドのペアを取得し、ブランドごとにグループ化して、ショップ数を取得します。

于 2013-02-05T05:59:30.943 に答える