• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:複数テーブル検索で同idの部分は結合させたい)

複数テーブル検索で同idの部分は結合させたい

このQ&Aのポイント
  • 初心者です。tableA, tableB, tableCのidを軸にデータを表示したいが、tableDのiconsの内容も出力したいが、行ごとにレコードが分かれてしまう。ひとつのカラムにiconsをカンマ区切りで結合したい。
  • tableA, tableB, tableCのidを軸にデータを表示する方法はわかるが、tableDのiconsを結合する方法がわからない。
  • MySQL 5.0.90-logを使用して、tableA, tableB, tableCのidを軸にデータを表示したいが、tableDのiconsをカンマ区切りで結合したいが方法がわからない。

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

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

group_concatを使ってみてください select tableA.id , body , name , sex , num , tableC.order_id , group_concat(icons order by icons) as icons FROM tableA , tableB , tableC ,tableD WHERE tableA.id = tableB.id AND tableA.id = tableC.id AND tableC.order_id = tableD.order_id group by tableA.id , body , name , sex , num , tableC.order_id

trfnc223
質問者

お礼

ありがとうございます! 実は、実際は、カラムがものすごい量があって、 group by tableA.id , body , name , sex , num , tableC.order_id の部分は全部入れないといけないものなのでしょうか?? ただだいぶいいところまで来ました!!

その他の回答 (2)

  • nora1962
  • ベストアンサー率60% (431/717)
回答No.3

解決しているみたいですが create index idx_order_id on tableD ( order_id, icons ); で索引つくって select tableA.id , tableA.body , tableB.name , tableB.sex , tableC.num , tableC.order_id, group_concat(tableD.icons order by icons) FROM tableA inner join tableB on tableA.id = tableB.id inner join tableC on tableA.id = tableC.id inner join tableD on tableC.order_id=tableD.order_id group by tableD.order_id; 実行計画を比較してみてください。

trfnc223
質問者

お礼

ありがとうございます!

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

ごめんなさい、手を抜きすぎた。 こんな感じでどうですか? select tableA.id , body , name , sex , num , tableC.order_id ,icons FROM tableA , tableB , tableC , (SELECT order_id, group_concat(icons order by icons) as icons FROM tableD group by order_id) AS D WHERE tableA.id = tableB.id AND tableA.id = tableC.id AND tableC.order_id = D.order_id

trfnc223
質問者

お礼

どちらもできるんですね! ありがとうございます!!

trfnc223
質問者

補足

すいません、、、 : Unknown column 'order_id' in 'field list'] というエラーが出てしまいました。。。 ためしに、tableAをつけてみたんですが、 : Unknown column 'tableA.order_id' in 'field list'] となってしまいました。。。

関連するQ&A