2

これはおそらく非常に単純ですが、何らかの理由でこれを空白にしています..

2 つのテーブルを結合し、あるテーブル内の別のテーブル内の列の合計出現回数を取得したいと考えています。表1

id | company
------------
 1 | companyA
 2 | companyB
 3 | companyC


Table2

id | company_id
------------
 1 |  2
 2 |  2
 3 |  1
 4 |  2
 5 |  3

結果は次のようになります。

company | count(*)
------------------
companyA| 1
companyB| 3
companyC| 1

カウント部分を正しく取得できないようです。私はそれが次のようなものになると考えていました:

SELECT Table1.company, count(*)
FROM Table1 JOIN Table2 ON
Table1.id = Table2.company_id
GROUP BY Table1.company;

改訂: 実際には、companyA と companyB が正しく表示されるのに、companyC が表示されないという問題があります。companyC のフィールドに一致するものがあることを再確認しました。

4

1 に答える 1

4

それはTable2.company_idあなたが参加していて、そうではないはずです Table2.id

SELECT  Table1.company, count(*)
FROM    Table1 
        INNER JOIN Table2 
           ON Table1.id = Table2.company_id  -- <<== here
GROUP   BY Table1.company;

グループ化しているため、パフォーマンスを高速化するには、の列にINDEXおそらく UNIQUE )を定義する必要がありますcompanytablecompany

更新 1

SELECT  Table1.company, count(Table2.company_id)
FROM    Table1 
        LEFT JOIN Table2 
           ON Table1.id = Table2.company_id  -- <<== here
GROUP   BY Table1.company;
于 2013-01-22T03:04:53.627 に答える