web-dev-qa-db-ja.com

外部キーを使用して別のテーブルの行を数える方法

私はソフトウェアエンジニアになるために学校におり、SQLの最初のクラスを受講しています。通常はMsSQLを使用しますが、学校のVMWareインスタンスがダウンしているため、コンピューターに古いバージョンのOracleがインストールされています(Oracle 11g Express)。各顧客の注文数を取得するために、customerテーブルとorderInfoテーブルを取得しようとしています。 orderTableを使用すれば機能しますが、注文が0の顧客は取得できません。基本的に、顧客がorderInfoテーブルにない場合、注文数はありません。以下のテーブル構造と私のSQLコードを参照してください。

顧客テーブル Customer Table 注文情報テーブル OrderInfo Table

これは私の現在のSQLコードと出力です。

SELECT CUSTOMER_ID, COUNT(ORDERINFO.ORDER_ID) AS TotalOrders
FROM ORDERINFO
WHERE CUSTOMER_ID = CUSTOMER_ID
GROUP BY CUSTOMER_ID;

出力: Output of SQL code

よろしくお願いします!

2
Jordan

2つのテーブル間の何らかのタイプの結合が必要です-次に、customers.customer_idでグループ化します。次に、注文のない顧客の結果を取得するには、LEFT結合を使用する方法があります。

SELECT 
    C.CUSTOMER_ID, 
    COUNT(O.ORDER_ID) AS TotalOrders
FROM 
        CUSTOMERS  C 
    LEFT JOIN 
        ORDERINFO  O
    ON 
        O.CUSTOMER_ID = C.CUSTOMER_ID
GROUP BY 
    C.CUSTOMER_ID ;
1
ypercubeᵀᴹ