• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:行と列の入れ替え検索(行は可変で項目を固定にしたい)のSQL文が出来な)

行と列の入れ替え検索結果をCSVファイルに出力する方法は?

このQ&Aのポイント
  • テーブルAとテーブルBの結合結果を行と列を入れ替えてCSVファイルに出力するためのSQL文がわかりません。テーブルAには存在しないUIDもあります。
  • WordPressのユーザ一覧をCSV形式で出力するプラグインがないため、テーブル結合結果を書き出したいのです。
  • テーブルAのnameカラムと、テーブルBのtelno, faxno, nicknameカラムを結合して出力したいです。

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

  • ベストアンサー
  • moousi
  • ベストアンサー率70% (21/30)
回答No.1

select distinct a.uid UID ,a.name name ,(select value from table_B b2 where b2.uid=b.uid and `key`='telno') telno ,(select value from table_B b2 where b2.uid=b.uid and `key`='faxno') faxno ,(select value from table_B b2 where b2.uid=b.uid and `key`='nickname') nickname from table_A a left join table_B b on a.uid=b.uid ;

Troy1970
質問者

お礼

ありがとうございました。実現することが出来ました。

その他の回答 (3)

  • yuu_x
  • ベストアンサー率52% (106/202)
回答No.4

抜けがあった SELECT `a`.`UID`, `a`.`name`, MAX(CASE `b`.`key` WHEN 'telno' THEN `b`.`value` ELSE '' END) AS 'telno', MAX(CASE `b`.`key` WHEN 'faxno' THEN `b`.`value` ELSE '' END) AS 'faxno', MAX(CASE `b`.`key` WHEN 'nickname' THEN `b`.`value` ELSE '' END) AS 'nickname' FROM `tableA` AS `a` LEFT JOIN `tableB` AS `b` ON `a`.`UID`=`b`.`UID` GROUP BY `UID`

Troy1970
質問者

お礼

お礼遅くなりました。こんな方法もあったんですね。恥ずかしながら始めて知りました。 ありがとうございます。

  • yuu_x
  • ベストアンサー率52% (106/202)
回答No.3

SELECT `a`.`UID`, `a`.`name`, GROUP_CONCAT(CASE `b`.`key` WHEN 'telno' THEN `b`.`value` END) AS 'telno', GROUP_CONCAT(CASE `b`.`key` WHEN 'faxno' THEN `b`.`value` END) AS 'faxno', GROUP_CONCAT(CASE `b`.`key` WHEN 'nickname' THEN `b`.`value` END) AS 'nickname' FROM `tableA` AS `a` JOIN `tableB` AS `b` ON `a`.`UID`=`b`.`UID` GROUP BY `UID`

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

構造が微妙ですが、とりあえず列数分joinしてやれば? select a.UID,a.name,b1.value as telno,b2.value as falxno,b3.value as nickname FROM tableA as a LEFT JOIN tableB as b1 on a.UID=b1.UID and b1.`key`='telno' LEFT JOIN tableB as b2 on a.UID=b2.UID and b2.`key`='faxno' LEFT JOIN tableB as b3 on a.UID=b3.UID and b3.`key`='nickname'

Troy1970
質問者

お礼

ありがとうございました。実現することが出来ました。

関連するQ&A