0

私は2つのテーブルを持っています。最初のテーブルには、多くのユーザー データが保持されます。2 番目のテーブルには、クラスのリストと、ポジションが埋まっている場合が含まれます。

ユーザー ID とユーザー名を使用して、クラスを表示する必要があります。

「結合」を試みましたが、名前が互いに上書きされているように見えるため、行ごとに1つの名前しか取得できません。

ユーザー テーブル:

+----------+---------+
|  user_ID |  name   |
+----------+---------+
|        1 |   Smith | 
+----------+---------+
|        2 |   Jones |
+----------+---------+
|        3 |   Tim   |
+----------+---------+
etc

クラス表:

+-------------+--------+--------+--------+---+---------+
|  class_date | Spot 1 | Spot 2 | Spot 3 | . | Spot 16 |
+-------------+--------+--------+--------+---+---------+
|  2012/1/1   |   1    |    4   |   8    | . |   5     |
+-------------+--------+--------+--------+---+---------+
|  2012/2/1   |   2    |  NULL  |   1    | . |   3     |
+-------------+--------+--------+--------+---+---------+
|  2012/3/1   |   3    |    7   | NULL   | . |  NULL   |
+-------------+--------+--------+--------+---+---------+

私が達成したいこと:

+-------------+-------------+------------+--------------+---+------------+
|  class_date |   Spot 1    |   Spot 2   |    Spot 3    | . |  Spot 16   |
+-------------+-------------+------------+--------------+---+------------+
|  2012/1/1   |  1 - Smith  |  4 - Ben   |   8 - Drew   | . | 5 - Loz    |
+-------------+-------------+------------+--------------+---+------------+ 
|  2012/2/1   |  2 - Jones  |  NULL      |   1 - Smith  | . | 3 - Tim    |
+-------------+-------------+------------+--------------+---+------------+
|  2012/3/1   |  3 - Tim    |  7 - Dan   |   NULL       | . | NULL       |
+-------------+-------------+------------+--------------+---+------------+

どんな助けでも大歓迎です

4

1 に答える 1

2

これを使用する必要がありますLEFT JOIN。試す、

SELECT  a.class_date,
        CONCAT(a.Spot1, ' - ', b.name) AS `SPOT 1`,
        CONCAT(a.Spot2, ' - ', c.name) AS `SPOT 2`,
        CONCAT(a.Spot3, ' - ', d.name) AS `SPOT 3`,
        ... -- keep doing until last column (i guess up to 16)
FROM    ClassTable a
            LEFT JOIN `UserTable` b
                ON a.Spot1 = b.user_ID
            LEFT JOIN `UserTable` c
                ON a.Spot2 = c.user_ID
            LEFT JOIN `UserTable` d
                ON a.Spot3 = d.user_ID
        ... ... -- keep doing until last column (i guess up to 16)
于 2012-08-22T15:23:59.583 に答える