group concat なしで複数の行を1つの行に結合する方法は?
以下のようなテーブルがあると考えてください:
テーブルユーザー:
uid | name
-----------
1 | A
2 | B
テーブルのメタ:
uid | metaid | metaval
------------------------
1 | 1 | Jsep St.
1 | 2 | St. Oak No. 15
2 | 1 | Dt. San Joseph
2 | 2 | St. Oak No. 17
2 | 3 | OA.
テーブルのメタプロパティ:
metaid | metakey
-----------------
1 | school
2 | address
3 | dept
4 | acc
学校と住所でユーザーを選択したいので、クエリは
SELECT
uid, name, metaval
FROM user
INNER JOIN meta ON meta.uid = user.uid
WHERE meta.metaid = 1 OR meta.metaid = 2
それは出力します
| UID | Name | MetaVal |
--------------------------------
| 1 | A | Jsep St. |
| 1 | A | St. Oak No. 15 |
私が望む結果はこのようなものです
uid | name | school | address
-------------------------------------
1 | A | Jsep St.| St. Oak No. 15
グループ連結では、値が「学校」と「住所」のメタプロパティが別の列ではなく1 つの列にある
2回参加しようとするとうまくいきますが、エレガントではないと思います
SELECT
uid, name, T1.metaval as school, T2.metaval as address
FROM user
INNER JOIN meta T1 ON T1.uid = user.uid AND T1.metaid = 1
INNER JOIN meta T2 ON T2.uid = user.uid AND T2.metaid = 2
より良い解決策はありますか?