- ベストアンサー
行と列の入れ替え検索結果をCSVファイルに出力する方法は?
- テーブルAとテーブルBの結合結果を行と列を入れ替えてCSVファイルに出力するためのSQL文がわかりません。テーブルAには存在しないUIDもあります。
- WordPressのユーザ一覧をCSV形式で出力するプラグインがないため、テーブル結合結果を書き出したいのです。
- テーブルAのnameカラムと、テーブルBのtelno, faxno, nicknameカラムを結合して出力したいです。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
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 ;
その他の回答 (3)
- yuu_x
- ベストアンサー率52% (106/202)
抜けがあった 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`
お礼
お礼遅くなりました。こんな方法もあったんですね。恥ずかしながら始めて知りました。 ありがとうございます。
- yuu_x
- ベストアンサー率52% (106/202)
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)
構造が微妙ですが、とりあえず列数分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'
お礼
ありがとうございました。実現することが出来ました。
お礼
ありがとうございました。実現することが出来ました。