
行と列の入れ替え検索(行は可変で項目を固定にしたい)のSQL文が出来ない
以下のテーブルがあります。
<テーブルA>
UID name
---------------
1 伊藤
2 鈴木
3 高橋
4 佐藤
<テーブルB>
no UID key value
-------------------
1 1 telno 001-01-0001
2 1 faxno 001-01-0002
3 1 nickname itochan
4 2 telno 111-11-1111
5 2 faxno 111-11-1112
6 3 nickname hashi
この2つのテーブルがあります。
・テーブルAにあるUIDはテーブルBにない場合もあります。
この場合、以下のように出力して、csvファイルにしたいのですが、可能でしょうか?
申し訳ありませんが、よろしくアドバイスお願いいたします。
UID name telno faxno nickname
-------------------------------------------------
1 伊藤 001-01-0001 001-01-0002 itochan
2 鈴木 111-11-1111 111-11-1112
3 高橋 hashi
4 佐藤
(経緯:wordpressのユーザの一覧(users,usetmetaテーブル)をユーザ一覧としてCSV形式にして保管したいのです。抽出&登録できるプラグインがなかったので)
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
;
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`
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`
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'
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP MySql PHP 2つのテーブルをJOINで結合 user_idで抽出 1 2023/01/03 14:04
- MySQL 【MySQL】本当に困っているので、助けてください。よろしくお願いします。 3 2023/06/03 14:24
- Access(アクセス) アクセスで教えてください。 例えばテーブル1に 1 佐藤 2 鈴木 3 佐々木 コードと住所一覧があ 3 2022/06/11 20:45
- その他(データベース) 更新クエリをリンクデータベーステーブルに実行し実行時エラー3362固有インデックスに重複する値が含ま 1 2022/09/21 11:44
- Access(アクセス) Accessテーブルの結合で別々のテーブルのフィールドを組み合わせて値を出す方法について 2 2022/07/20 19:43
- Oracle 質問です。 下記のテーブルとデータがあり、 取得想定結果のように出力したいです。 下記のsqlだと0 2 2023/05/23 19:10
- Ruby pandasでsqlite3にテーブル作成・追加・読み出しでindexの取り扱い方教えてください 5 2023/03/08 09:57
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- その他(Microsoft Office) エクセルでテーブルの最終行が自動追加されない 1 2023/01/04 15:09
- Oracle SQLについて教えて下さい。 主キーを持ったカラムを主キーの機能を持たせたまま カンマ区切りで文字列 1 2023/03/27 22:47
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【SQL】他テーブルに含まれる値...
-
SQLサーバに対するSQL文で抽出...
-
既存データをINSERT文にして出...
-
SQLで、Join句で結合したテ...
-
Accessの構成をコピーしたい
-
SQLのテーブルにないデータの出力
-
パススルークエリ&ACCESSテーブ...
-
バルクINSERT直後に、最後のInc...
-
2つのテーブルをLIKE演算子のよ...
-
ADO+ODBCでテーブルに接続する...
-
ExcelのVLOOKUP関数の動作をMyS...
-
Excelでしりとりを作る方法
-
AccessVBAでExcelをリンクテー...
-
ExcelのMatch関数のようなもの...
-
ACCESSのVBAにてExcelに行...
-
テーブル名が可変の場合のクエ...
-
結合したテーブルをSUMしたい
-
同一テーブル内で違うフィール...
-
データベース、テーブル設計に...
-
Access特定のテーブルを編集不...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【SQL】他テーブルに含まれる値...
-
SQLで、Join句で結合したテ...
-
Accessの構成をコピーしたい
-
既存データをINSERT文にして出...
-
同一テーブル内での比較(最新...
-
SQLサーバに対するSQL文で抽出...
-
副問合せを使わずにUNIONと同様...
-
結合したテーブルをSUMしたい
-
テーブル名が可変の場合のクエ...
-
PRIMARY KEYのコピー
-
2つのテーブルをLIKE演算子のよ...
-
ACCESSのVBAにてExcelに行...
-
DB2のSQLコマンドについて
-
Excelでしりとりを作る方法
-
ExcelのMatch関数のようなもの...
-
改行を含んだデータのインポート
-
ExcelのVLOOKUP関数の動作をMyS...
-
ADO+ODBCでテーブルに接続する...
-
データ無し時は空白行にしたい...
-
Access特定のテーブルを編集不...
おすすめ情報