前提
MySQLで用意された複数のテーブルからデータを抽出したいです。
複数のテーブルを用いたクエリの実装で不安な点があります。
実現したいこと
テーブル:A
product_id | product_name | date |
---|---|---|
0001 | aaaa | 20221120 |
0002 | bbbb | 20221119 |
0003 | cccc | 20221118 |
テーブル:B
customer_id | customer_name |
---|---|
1000 | aaaa |
2000 | bbbb |
3000 | cccc |
テーブル:C
c_id | c_name | gender |
---|---|---|
0001 | aaaa | 0 |
0002 | bbbb | 1 |
0003 | cccc | 1 |
実装内容としては、テーブルAとテーブルBをCROSS JOINしたものに、テーブルCを(C.c_id=A.product_id, C.c_name=B.customer_name)の条件でJOINしたい。
該当のソースコード
SELECT * FROM(SELECT * FROM A CROSS JOIN B) AS X JOIN C.c_id = X.product_id AND C.c_name = X.customer_name;
試したこと
こちらで自分が求めていることができているのかが分かりません。
CROSS JOINしたテーブル:Xと新たなテーブル:Cとでの条件付きJOINの方法を伺いたいです。
よろしくお願いいたします。
ちょっとテーブル設計が謎です。A は商品テーブル、B は顧客テーブルだと思いますが、
・A の date は何の日付でしょうか? その商品の発売開始日?
・商品名と顧客名のデータ (aaaa, bbbb, cccc) がかぶっていて紛らわしいので、どっちかを別の名前にした方がわかりやすいかと。
・C は何のテーブルでしょうか?
・C の c_name で顧客テーブルを参照してますが、同姓同名の人がいる可能性があるので、customer_id を使うべきかと。
・C の gender が顧客の性別ということなら、顧客テーブルに持たせた方がいいのでは。
回答1件
あなたの回答
tips
プレビュー