• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:left outer joinが上手くいきません)

left outer joinが上手くいかない!テーブルの結合とデータ抽出の方法

このQ&Aのポイント
  • left outer joinなどを使用して、四つのテーブルに分かれたデータを結合し、結合後のテーブルのデータがチェック用テーブルに含まれていないものを抽出したいですが、構文エラーが発生し上手くいきません。
  • 具体的には、最新購入テーブルと過去購入テーブルの両方の顧客IDを抽出し、顧客名テーブルと紐付けて顧客コードの一覧を作りたいです。その後、チェック用テーブルに含まれない顧客コードを出力したいですが、構文エラーや間違いが多く、解決方法がわかりません。
  • 過去購入テーブルの中には顧客ID1と顧客ID2のフィールドがありますが、データは顧客名テーブルの顧客IDと同じです。UNIONを使用して顧客ID一覧を結合し、顧客コードを取得しようとしましたが、うまくいきませんでした。困っています。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.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) ; 動作チェックはしていません。

Rubellite
質問者

お礼

1テーブルずつ、該当のレコードがあるかどうかを調べるというやり方もあるんですね。ありがとうございます、参考になります!

Rubellite
質問者

補足

条件を複数含めるというのをヒントにして、自己解決しました。 ありがとうございました。 ーーーー 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

関連するQ&A