MySQL Join-Tabelle

Ich habe 4 Tische.

Tabelle A, die Benutzer hat - (user_id, username, and name)Tabelle B, die Token hat - (token_id, user_id). Jeder Benutzer hat 10 Token-Einträge. Jedes Token ist nur einem Benutzer zugeordnet. Ein Benutzer hat mehrere Token (10)Tabelle C, die Arcadespiele ist - (arcade_id, token_id, name, levels, lives). Nur ein Token kann einem Arcade-Spiel zugewiesen werden.Tabelle D, die Preise ist - (prize_id, token_id, name, length, width, height). Nur ein Token kann einem Preis zugeordnet werden.

Ein Token wird entweder einem Arcade-Spiel oder einem Gewinn oder nichts, aber nicht beidem zugewiesen.

Meine Frage ist, wie Sie eine MySQL-Join-Abfrage einrichten, um herauszufinden, welche Token für einen bestimmten Benutzer einem Spiel oder einem Preis zugewiesen sind oder noch nicht zugewiesen wurden. Sind meine Tischlayouts optimal? Oder haben Sie Vorschläge für ein anderes Layout?

Hier sind meine Tische:

mysql> select * from users;

+---------+--------+
| user_id | name   |
+---------+--------+
|       1 | User 1 |
|       2 | User 2 |
|       3 | User 3 |
|       4 | User 4 |
+---------+--------+

mysql> select * from tokens;

+----------+---------+
| token_id | user_id |
+----------+---------+
|        1 |       1 |
|        2 |       1 |
|        3 |       2 |
|        4 |       2 |
|        5 |       2 |
|       11 |       2 |
|        6 |       3 |
|        7 |       3 |
|       10 |       3 |
|        8 |       4 |
|        9 |       4 |
+----------+---------+

mysql> select * from prizes;

+----------+----------+-----------+
| prize_id | token_id | prizename |
+----------+----------+-----------+
|        1 |        4 | prize 1   |
|        2 |        7 | prize 2   |
|        3 |        8 | prize 3   |
|        4 |        9 | prize 4   |
+----------+----------+-----------+

mysql> select * from arcade;

+-----------+----------+----------+
| arcade_id | token_id | gamename |
+-----------+----------+----------+
|         1 |        1 | game 1   |
|         2 |        2 | game 2   |
|         3 |        3 | game 3   |
|         4 |        5 | game 4   |
|         5 |       11 | game 6   |
+-----------+----------+----------+

Ich hätte gerne eine SQL-Abfrage, bei der ich die folgenden Informationen erhalten kann:

Für Benutzer 1 haben sie 2 Token - Token-ID 1 wird Spiel 1 zugewiesen und Token-ID 2 wird Spiel 2 zugewiesen

Oder für Benutzer 2 - sie haben 4 Token - wird Token-ID 3 Spiel 3 zugewiesen, Token-ID 4 wird Preis 1 zugewiesen, Token-ID 5 wird Spiel 4 zugewiesen.

Oder für Benutzer 3 - sie haben 3 Token - Token-ID 6 ist noch nicht zugewiesen, Token-ID 7 ist Preis 2, Token-ID 10 ist nicht zugewiesen

und so weiter.

Ich möchte eine MySQL-Abfragezeichenfolge wie folgt erstellen

Select **** 
  from ***** 
 Where user_id = 1

Hier gebe ich die Benutzer-ID an und erhalte alle oben genannten Informationen.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage