4

私は2つのテーブルを持っています

AとB

 A                          B
-----------------         -----------------
a_pk (int)                b_pk (int)
a_name(varchar)           a_pk (int)
                          b_name (varchar) 

クエリを書くことができました

SELECT a.a_name, b.b_name
FROM  a LEFT OUTER JOIN b ON a.a_pk = b.a_pk

これにより、テーブル a とそのテーブル b に結合されたデータのすべての明確でないリストが返されます。重複は、異なる b レコードが共通の a_pk 列値を共有している列 a に表示されます。

しかし、私がやりたいことは、テーブル A の列 a_name から値の完全なリストを取得し、テーブル B の結合された値の COUNT である列を追加することです。

したがって、a_pk = 1 および a_name = test で、テーブル b に a_pk 値が 1 の 5 つのレコードがある場合、結果セットは次のようになります。

a_name        b_count
------        -------
test           5
4

3 に答える 3

11

クエリは次のようになります。

SELECT 
    a.a_name, 
    (
        SELECT Count(b.b_pk) 
        FROM b 
        Where b.a_pk = a.a_pk
    ) as b_count 
FROM  a
于 2012-09-12T18:28:36.947 に答える
4
SELECT a_name, COUNT(*) as 'b_count'
FROM 
    A a
    JOIN B b
    ON a.a_pk = b.a_pk
GROUP BY a_name
于 2012-09-12T18:27:50.867 に答える
0
SELECT
    a.name,
    (
        SELECT COUNT(1)
        FROM B b
        WHERE b.a_pk = a.a_pk
    )
FROM A a
于 2012-09-12T18:29:05.850 に答える