• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:SELECT~JOIN文での抽出結果の導き出し方)

SELECT JOIN文での抽出結果の導き出し方

このQ&Aのポイント
  • SELECT JOIN文を利用してテーブルから求めたい結果を抽出する方法について説明します。
  • 具体的な例として、2つのテーブルをJOINし、結果を表示する方法を示します。
  • 抽出結果のイメージとして、id、genre、etc1、etc2のカラムを持つテーブルを作成し、JOINして欲しい結果を得る方法を解説します。

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

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

>求めている結果を導き出すSQLクエリ table_aのidは0~9最大10個しか持てないですが、その範囲で 考えればよいのでしょうか? (123は1と2と3という意味でしょうけど、12や23や123だって あるでしょうから・・) ちなみにidはなんの提示もないので適当にソートキーをつかわないと 符番できないすね ※テーブル create table table_a (id char(1),genre varchar(30)); insert into table_a values('1','和食'),('2','中華'),('3','イタリアン'),('4','フレンチ'); create table table_b (table_a_id varchar(10),etc1 varchar(30),etc2 varchar(30)); insert into table_b values('123','aaa','ああ'),('23','bbb','いい'),('1','ccc','うう'),('2','ddd','ええ'); ※SQL set @id=0; select @id:=@id+1 as id,group_concat(genre) as genre,etc1,etc2 from table_aa,table_bb where table_a_id like concat('%',id,'%') group by table_a_id order by etc1 前回にもかきましたが「できないことはない」だけの処理で もやはSQLでやる意味がないくらいパフォーマンスの出ない 処理だと思います。

primeiro
質問者

お礼

>もやはSQLでやる意味がないくらいパフォーマンスの出ない 処理だと思います。 その通りだと思います。 テーブルを構築し直しても良いのですが、インプットの処理とアウトプットの処理(自分が担当)で、別々の人間が別々の言語で構築しているので、構築時間等を考えると、このままのテーブルを利用するのがベターだと思いまして。。 プログラムに直書きして処理した方が、レスポンス良さそうですよね。 クエリ例、有難うございました。 参考になりました!

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

このままでもできないことはないと思いますが、table_bの構造が SQL的に最悪ですね・・・正規化を学習した方がいいでしょう。 一部手を抜いていますが、たとえばこんな感じで、 ※テーブル create table table_a (genre_id int,genre varchar(20)); insert into table_a values(1,'和食'),(2,'中華'),(3,'イタリアン'),(4,'フレンチ'); create table table_b (etc_id int,etc1 varchar(30),etc2 varchar(30)); insert into table_b values(1,'aaa','ああ'),(2,'bbb','いい'),(3,'ccc','うう'),(4,'ddd','ええ'); create table table_a_b (genre_id int,etc_id); insert into table_a_b values(1,1),(1,2),(1,3),(2,2),(2,3),(3,1),(4,2); ※SQL select table_a_b.genre_id,group_concat(table_a.genre) as genre,table_b.etc1,table_b.etc2 from table_a_b inner join table_a on table_a.genre_id = table_a_b.genre_id inner join table_b on table_a_b.etc_id = table_b.etc_id group by table_a_b.genre_id

primeiro
質問者

補足

yambejp様 ご回答下さいまして有難うございます。 すみません、説明不足でした。 自分がご教授頂きたかったのは、求めている結果を導き出すSQLクエリ のみです。 SQL的に最悪なのは分かっておるのですが、『table_a』『table_b』は上記質問内容のままで、求めている結果を導き出すSQLクエリが存在するのか、存在するのであればどのように構文を書くのかをご教授頂ければと考えておりました。

すると、全ての回答が全文表示されます。