我有4個表。具有標記(user_id, username, and name
) mysql連接表
- 表A(
token_id, user_id
)。每個用戶有10個標記條目。每個令牌只能分配給一個用戶。一個用戶有多個標記(10) - 表C是商場遊戲 - (
arcade_id, token_id, name, levels, lives
)。只有一個令牌只能分配給一個街機遊戲。 - 表D即獎品 - (
prize_id, token_id, name, length, width, height
)。只有一個令牌只能分配給一個獎品。
令牌被分配給街機遊戲或獎品,或者分配給任何一個但不是兩個。
我的問題是如何設置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個令牌 - 令牌ID 1分配遊戲1和令牌標識2被分配給遊戲2
或者對於用戶2 - 它們具有4個令牌 - 令牌標識3被分配給遊戲3,令牌標識4被分配給獎勵1,令牌標識5被分配給遊戲4 。
或對於用戶3 - 他們有3個令牌 - 令牌ID 6尚未分配,令牌ID 7是獎2,令牌ID 10未分配
等等。
我想建立這樣
Select ****
from *****
Where user_id = 1
MySQL查詢字符串,如果我指定的用戶ID並獲得以上所有信息。
可以請您提供http://sqlfiddle.com –