0

必要に応じてデータをリストおよびソートするための適切な SQL ステートメントを組み立てるのに苦労しています。以下は、データを選択する必要がある 2 つのテーブルの構造です。

users テーブルの各ユーザーについて、users_nfo テーブルの ID、名前、key[a] および key[b] をリストする必要があります。

Table users: 
+----+------+
| id | name |
+----+------+
| 1  | aa   |
| 2  | bb   |
| 3  | cc   |
| 4  | dd   |
| 5  | ee   |
+----+------+

Table users_nfo:
+----+-----+-----+-------+
| id | uid | key | value |
+----+-----+-----+-------+
| 1  | 1   | a   | 22    |
| 2  | 1   | b   | 47    |
| 3  | 2   | a   | 38    |
| 4  | 2   | b   | 16    |
| 5  | 3   | a   | 27    |
| 6  | 3   | b   | 67    |
| 7  | 4   | a   | 75    |
| 8  | 4   | b   | 67    |
| 9  | 5   | a   | 63    |
| 10 | 5   | b   | 67    |
+----+-----+-----+-------+

結果はこれに似ているはずです

Array result: 
+----+------+---+---+
| id | name | a | b |
+----+------+---+---+
| 1  | aa   |22 |47 |
| 2  | bb   |38 |16 |
| 3  | cc   |27 |67 |
| 4  | dd   |75 |67 |
| 5  | ee   |63 |67 |
+----+------+---+---+

さらに、asc by b など、任意の列キーで並べ替えることができる必要があります。

助けていただければ幸いです。前もって感謝します!

4

1 に答える 1

2

秘訣は、users_nfo (sic) テーブルを 2 回結合し、そのkey列を結合条件に含めることです。このような:

SELECT u.ID, u.name, n1.value, n2.value from USERS u
JOIN users_nfo n1
ON u.id = n1.id AND n1.key = 'a'
JOIN users_nfo n2
ON u.id = n2.id AND n1.key = 'b'
ORDER BY n2.value ASC
于 2012-08-19T18:41:19.480 に答える