繁体   English   中英

Mysql 连接四张表

[英]Mysql Joining four tables

我在将这些表链接在一起时遇到了麻烦:

表 1:比赛

ID 姓名 日期
1 亚当 vs 兰斯 2021-09-2021
2 贝克斯 vs 亚当 vs 艾丽卡 2021-08-2021
3 克雷格 vs 布里 2021-07-2021
4 丹妮尔 VS 艾伦 2021-06-2021
5 艾丽卡 vs 佐伊 vs AJ 2021-05-2021
6 布里 VS 艾丽卡 2021-04-2021
7 布里 VS 兰斯 2021-03-2021
8 布里 vs 兰斯 vs 佐伊 2021-02-2021

表 2:获奖者:

ID 姓名 比赛编号 编号
1 亚当 1 1
2 贝克斯 2 3
3 丹妮尔 4 7
4 佐伊 5 9
5 埃里卡 6 4
6 布里 7 5
7 布里 8 5

表 3:输家:

ID 姓名 比赛编号 编号
1 1 2
2 亚当 2 1
3 埃里卡 2 4
4 艾伦 4 8
5 阿杰 5 10
6 埃里卡 5 4
7 布里 6 5
8 7 2
9 8 2
10 佐伊 8 9

表 3:平局:

ID 姓名 比赛编号 编号
1 克雷格 3 6
2 布里 3 5

表 4:玩家

ID 姓名 性别
1 亚当
2
3 贝克斯 F
4 埃里卡 F
5 布里 F
6 克雷格
7 丹妮尔 F
8 艾伦
9 佐伊 F
10 阿杰 F

我一直在尝试的查询是在其中查找所有与 Bree 匹配的匹配项并按日期对它们进行排序。

表 5:Output:

比赛编号
3
6
7
8
Draw: Match ID: 3
Los: Match ID: 6
Win: Match ID: 7
Win: Match ID: 8

当我尝试对 Match 表进行内联输赢时,它可以工作,但第二次我包括平局,它不会返回任何内容。

如果我尝试只返回平局,它会起作用,但内部加入失败或获胜会导致 0 结果。

任何人都可以帮助我提供有效的代码吗?

查询我正在尝试:

SELECT Matches.ID AS MatchID, Winners.Name
    FROM Matches
            inner JOIN Draws
            ON Matches.ID = Draws.MatchID
            
            inner JOIN Winners
            ON Matches.ID = Winners.MatchID
            
            inner JOIN Losers
            ON Matches.ID = Losers.Match ID
                        
            and (Winners.winner_id_num = 5
            OR
            Losers.type_id_num = 5
            OR
            Draws.IDNum = 5
            
                )
            
            GROUP BY match_id_num;

我建议您在带有结果的 3 个表之间使用UNION ,并将 output 与Matches表连接起来。

SELECT r.Result, r.IDMatch FROM (
    SELECT *, 'Win' as Result FROM Winners WHERE IDNum = 5
    UNION 
    SELECT *, 'Los' as Result FROM Losers WHERE IDNum = 5
    UNION 
    SELECT *, 'Draw' as Result FROM Draws WHERE IDNum = 5
) AS r
INNER JOIN Matches AS m ON m.ID = r.IDMatch
ORDER BY m.Date DESC

output 将是:

Draw  3
Los   6
Win   7
Win   8

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM