私はソフトウェアエンジニアになるために学校におり、SQLの最初のクラスを受講しています。通常はMsSQLを使用しますが、学校のVMWareインスタンスがダウンしているため、コンピューターに古いバージョンのOracleがインストールされています(Oracle 11g Express)。各顧客の注文数を取得するために、customerテーブルとorderInfoテーブルを取得しようとしています。 orderTableを使用すれば機能しますが、注文が0の顧客は取得できません。基本的に、顧客がorderInfoテーブルにない場合、注文数はありません。以下のテーブル構造と私のSQLコードを参照してください。
これは私の現在のSQLコードと出力です。
SELECT CUSTOMER_ID, COUNT(ORDERINFO.ORDER_ID) AS TotalOrders
FROM ORDERINFO
WHERE CUSTOMER_ID = CUSTOMER_ID
GROUP BY CUSTOMER_ID;
よろしくお願いします!
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 ;