我有四个这样的表:
**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 每个用户都有一个具有队形和团队名称的团队。“活动球员”表引用具有team_ID的player_ID,以查看哪些球员当前在哪些球队中处于活动状态。
假设user1登录到应用程序,然后我想获取所有玩家的name、rating和他们的cardview_ID。应该是这样的:
_____________________________
name rating cardview_ID
-----------------------------
Hazard 90 7
Messi 94 3这些是目前活跃在team1的user1's团队中的球员。
我怎样才能得到这个连接表?我尝试过使用inner join,但这似乎不适合我。
_______________________________ EDIT_____________________________________
下面的查询没有给出所需的结果:
SELECT players.name, players.rating, activeplayers.cardview_ID
FROM players
INNER JOIN
activeplayers
ON players.player_ID = usedplayers.player_ID我也试着在team_ID上加入他们。
发布于 2017-08-30 02:48:32
假设你帖子中的查询包含一个拼写错误,实际上是这样的:
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子句。
就这样。
发布于 2017-08-30 02:43:27
假设您有可用的登录用户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>还请注意要求澄清详细信息的问题,如果此查询让您在此过程中遇到问题,但您需要更多信息,也请随时回复。尖括号中的内容当然是占位符。我也不知道您确切的表名,所以您可能需要将方括号中的内容替换为实际的表名。
https://stackoverflow.com/questions/45946130
复制相似问题