我有四张这样的表:
**USERS**
___________________________
user_ID username password
---------------------------
1 user1 1234
2 user2 5678
**TEAMS**
______________________________________
team_ID formation team_name user_ID
--------------------------------------
1 4-4-2 team1 1
2 4-3-3 team2 2
**PLAYERS**
____________________________________
player_ID name position rating
------------------------------------
1 Ronaldo LW 94
2 Messi RW 93
3 Hazard LW 90
**ACTIVE PLAYERS**
___________________________________
ID player_ID team_ID cardview_ID
-----------------------------------
1 1 2 9
2 3 1 7
3 2 1 3
每个用户都有一个团队,其中包含阵型和团队名称。 "活跃玩家"表格引用player_ID
和team_ID
,以查看哪些球员目前在哪些球队中有效。
让我们说user1
登录到应用程序,然后我想让所有玩家name
,rating
和他们的cardview_ID
。应该是这样的东西:
_____________________________
name rating cardview_ID
-----------------------------
Hazard 90 7
Messi 94 3
这些是user1's
小组目前有效的玩家team1
。
如何获得此联接表?我试过inner join
,但似乎没有为我做这项工作。
_______________________________编辑_____________________________________
这是一个没有给出所需结果的查询:
SELECT players.name, players.rating, activeplayers.cardview_ID
FROM players
INNER JOIN
activeplayers
ON players.player_ID = usedplayers.player_ID
我还尝试在team_ID上加入他们。
答案 0 :(得分:3)
假设您已登录用户的ID,我认为这会为您提供您所要求的内容:
SELECT
[PLAYERS].name,
[PLAYERS].rating,
[ACTIVE PLAYERS].cardview_ID
FROM [TEAMS]
JOIN [ACTIVE PLAYERS]
ON [TEAMS].team_ID = [ACTIVE PLAYERS].team_id
JOIN [PLAYERS]
ON [PLAYERS].player_id = [ACTIVE PLAYERS].player_id
WHERE [TEAMS].user_id = <logged_in_user_id>
请注意要求澄清详细信息的问题,如果此查询可以让您了解更多信息,也可以随时回复。尖括号中的内容当然是占位符。我也不知道您确切的表名,因此您可能需要将方括号中的内容替换为实际的表名。
答案 1 :(得分:2)
假设帖子中的查询包含拼写错误,实际上就是这样:
SELECT players.name, players.rating, activeplayers.cardview_ID
FROM players
INNER JOIN
activeplayers
ON players.player_ID = activeplayers.player_ID
此查询将正确返回所有活跃玩家的玩家。现在只将其限制为User1的团队,您需要向Teams
表添加一个额外的连接,就像上面的连接一样,然后添加一个过滤Teams.UserID
的WHERE子句
就是这样。