首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL -不知道如何连接三个表

SQL -不知道如何连接三个表
EN

Stack Overflow用户
提问于 2017-08-30 02:35:53
回答 2查看 60关注 0票数 0

我有四个这样的表:

代码语言:javascript
复制
       **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_IDplayer_ID,以查看哪些球员当前在哪些球队中处于活动状态。

假设user1登录到应用程序,然后我想获取所有玩家的namerating和他们的cardview_ID。应该是这样的:

代码语言:javascript
复制
_____________________________
name    rating    cardview_ID
-----------------------------
Hazard  90        7
Messi   94        3

这些是目前活跃在team1user1's团队中的球员。

我怎样才能得到这个连接表?我尝试过使用inner join,但这似乎不适合我。

_______________________________ EDIT_____________________________________

下面的查询没有给出所需的结果:

代码语言:javascript
复制
SELECT players.name, players.rating, activeplayers.cardview_ID
FROM players
INNER JOIN
activeplayers
ON players.player_ID = usedplayers.player_ID

我也试着在team_ID上加入他们。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-08-30 02:48:32

假设你帖子中的查询包含一个拼写错误,实际上是这样的:

代码语言:javascript
复制
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子句。

就这样。

票数 2
EN

Stack Overflow用户

发布于 2017-08-30 02:43:27

假设您有可用的登录用户ID,我认为这将为您提供所需的信息:

代码语言:javascript
复制
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>

还请注意要求澄清详细信息的问题,如果此查询让您在此过程中遇到问题,但您需要更多信息,也请随时回复。尖括号中的内容当然是占位符。我也不知道您确切的表名,所以您可能需要将方括号中的内容替换为实际的表名。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45946130

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档