1

次のようなテーブルがあります。

idstable
+--------+-----+-----+-----+-----+-----+
| userid | id1 | id2 | id3 | id4 | id5 |
+--------+-----+-----+-----+-----+-----+
|   1    |  6  |  2  |  52 |  32 |  16 |
+--------+-----+-----+-----+-----+-----+
|   2    |  12 |  5  |  18 |  21 |  5  |
+--------+-----+-----+-----+-----+-----+
|  ...   | ... | ... | ... | ... | ... |

列に格納されているID番号を取得し、それらを使用して別のテーブルから行を取得したい. 行を取得したいテーブルは次のとおりです。

namestable
+----+----------+
| id |   name   |
+----+----------+
| 6  |   Bruce  |
+----+----------+
| 2  |   Mary   |
+----+----------+
| 52 |   Dick   |
+----+----------+
| 32 |   Bob    |
+----+----------+
| 16 |   Jack   |
+----+----------+
| .. |   ...    |

私が取得しようとしている結果セットは次のようなものです:

+------+----+-------+
| User | id | name  |
+------+----+-------+
| 1    | 6  | Bruce |
+------+----+-------+
| 1    | 2  | Mary  |
+------+----+-------+
| 1    | 52 | Dick  |
+------+----+-------+
| 1    | 32 | Bob   |
+------+----+-------+
| 1    | 16 | Jack  |
+------+----+-------+

ユーザー ID を使用して にクエリidstableを実行して、それに関連付けられている ID を取得し、から正しい行を取得するにはどうすればよいnamestableですか? これは転置と呼ばれていると読みましたが、簡潔な例をまだ見つけていません。

何か案は?

4

1 に答える 1

1

join

SELECT idstable.id as User, namestable.id as id, namestable.name as name
FROM idstable it
JOIN namestable nt on (nt.id = it.id1 or nt.id = it.id2 ... 3,4,5 like the first two)

理想的には、idstableには5つの列はなく、IDごとに5つの行があります。

于 2011-02-22T18:15:42.547 に答える