- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:left outer joinが上手くいきません)
left outer joinが上手くいかない!テーブルの結合とデータ抽出の方法
このQ&Aのポイント
- left outer joinなどを使用して、四つのテーブルに分かれたデータを結合し、結合後のテーブルのデータがチェック用テーブルに含まれていないものを抽出したいですが、構文エラーが発生し上手くいきません。
- 具体的には、最新購入テーブルと過去購入テーブルの両方の顧客IDを抽出し、顧客名テーブルと紐付けて顧客コードの一覧を作りたいです。その後、チェック用テーブルに含まれない顧客コードを出力したいですが、構文エラーや間違いが多く、解決方法がわかりません。
- 過去購入テーブルの中には顧客ID1と顧客ID2のフィールドがありますが、データは顧客名テーブルの顧客IDと同じです。UNIONを使用して顧客ID一覧を結合し、顧客コードを取得しようとしましたが、うまくいきませんでした。困っています。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
select customer_id from customer where ( customer.customer_id in (select customer_id from recently) or customer.customer_id in (select customer_id from oldtime) ) and customer_code not in (select customer_code from checkdo) ; 動作チェックはしていません。
お礼
1テーブルずつ、該当のレコードがあるかどうかを調べるというやり方もあるんですね。ありがとうございます、参考になります!
補足
条件を複数含めるというのをヒントにして、自己解決しました。 ありがとうございました。 ーーーー SELECT customer_code,customer_name FROM ( SELECT customer_code,customer_name FROM recently INNER JOIN customer ON recently.customer_id = customer.customer_id UNION SELECT customer_code,customer_name FROM old INNER JOIN customer ON old.customer_id1 = customer.customer_id UNION SELECT customer_code,customer_name FROM old INNER JOIN customer ON old.customer_id2 = customer.customer_id ) as code LEFT OUTER JOIN check ON code.customer_code = check.customer_code WHERE customer_name is NULL