стол соединения mysql
У меня есть 4 таблицы.
Table A that has users - (user_id, username, and name
)
Table B that has tokens - (token_id, user_id
). Each user has 10 token entries. Each token is assigned to only one user. A user has multiple tokens (10)
Table C that is arcades games - (arcade_id, token_id, name, levels, lives
). Only one token can be assigned to one arcade game only.
Table D that is prizes - (prize_id, token_id, name, length, width, height
). Only one token can be assigned to one prize only.
Токен присваивается либо аркадной игре, либо призу, либо ничему, но не обоим.
Мой вопрос заключается в том, как настроить запрос на соединение MySQL, чтобы выяснить, какие токены для данного пользователя назначены игре или призу или еще не были назначены. Являются ли мои таблицы оптимальными? Или у вас есть предложения для другого макета?
Вот мои таблицы:
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 |
+-----------+----------+----------+
Я хотел бы запрос SQL, где я могу получить следующую информацию:
Для пользователя 1 у него есть 2 токена - идентификатор токена 1 назначен игре 1, а идентификатор токена 2 назначен игре 2
Или для пользователя 2 - у него 4 токена - идентификатор 3 токена назначен игре 3, идентификатор 4 токена назначен призу 1, идентификатор 5 токена присвоен игре 4.
Или для пользователя 3 - у него 3 токена - идентификатор токена 6 еще не назначен, идентификатор токена 7 - приз 2, идентификатор токена 10 не назначен
и так далее.
Я хотел бы построить строку запроса MySQL, как это
Select ****
from *****
Where user_id = 1
Где я указываю идентификатор пользователя и получаю всю информацию выше.