次のタスクに適切な SQL を記述する方法を何時間もかけて調査しましたが、これは私がこれまでに作成しなければならなかった最も複雑な SQL クエリであるため、最終的に何らかの助けを得る必要があると感じています :(
お客様のすべての電子メール アドレスを含む電子メール リストを作成しています。2 つのテーブルがあります。1 つは顧客レベルの情報を含む顧客テーブルで、もう 1 つは個人レベルの情報を含む担当者テーブルです。ほとんどのデータが重複しているため、両方のテーブルで同じ電子メール アドレスが発生します。しかし、両方のテーブルで電子メール アドレス フィールドが空になる可能性があるため、空の行を返したくありません。
実店舗で購入するユーザーは、顧客レベル テーブルのみに登録されることが多いですが、オンラインで購入するユーザーは、常に顧客レベル テーブルと人物レベル テーブルの両方に登録されます。
すべての電子メール アドレスを取得する完全なリストを作成したいと考えています。すべての電子メール アドレスは一意であり、電子メール アドレスは重複しておらず、電子メール アドレスは null ではありません。また、個人テーブルからデータを取得するときに、顧客テーブルの列に結合したいと考えています (以下の例の郵便番号)。
お客様
| CustomerID | Firstname | Lastname | Email | Zipcode |
| 22 | Jeff | Carson | jeffcar@mail.com | 81712 |
| 29 | John | Doe | null | 51211 |
| 37 | Gina | Andersen | null | 21147 |
| 42 | Brad | Cole | brad@company.org | 39261 |
連絡担当者
| PersonID | CustomerID | Firstname | Lastname | Email |
| 8712 | 22 | Jeff | Carson | null |
| 8916 | 29 | Jane | Doe | jane@doe.net |
| 8922 | 29 | Danny | Doe | null |
| 9181 | 37 | Gina | Andersen | gina@gmail.com |
| 9515 | 37 | Ben | Andersen | ben88@gmail.com |
テーブルを結合して、次のものを生成したいと考えています。
ファイナルテーブル
| PersonID | CustomerID | Firstname | Lastname | Email | Zipcode |
| 8712 | 22 | Jeff | Carson | jeffcar@mail.com | 81712 |
| 8916 | 29 | Jane | Doe | jane@doe.net | 51211 |
| 9181 | 37 | Gina | Andersen | gina@gmail.com | 21147 |
| 9515 | 37 | Ben | Andersen | ben88@gmail.com | 21147 |
| null | 42 | Brad | Cole | brad@company.org | 39261 |
これはかなり一般的な作業だと思いましたが、同様の質問をする人を見つけられなかったので、専門知識に信頼を置きました.