gpt4 book ai didi

Mysql多对多问题(排行榜/记分牌)

转载 作者:行者123 更新时间:2023-11-29 02:37:37 25 4
gpt4 key购买 nike

我正在为即将到来的世界杯做一个小项目。我正在建立一个基于国家队小组的名册/排行榜/记分牌。我们的想法是获得有关小组内或淘汰赛阶段所有即将到来的比赛的信息(比分、比赛时间、比赛统计数据等)。目前我被数据库困住了,因为我无法提出一个可以连续返回配对团队的查询。我有这 3 个表:

CREATE  TABLE IF NOT EXISTS `wc_team` (
`id` INT NOT NULL AUTO_INCREMENT ,
`name` VARCHAR(45) NULL ,
`description` VARCHAR(250) NULL ,
`flag` VARCHAR(45) NULL ,
`image` VARCHAR(45) NULL ,
`added` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP ,
PRIMARY KEY (`id`) ,

CREATE TABLE IF NOT EXISTS `wc_match` (
`id` INT NOT NULL AUTO_INCREMENT ,
`score` VARCHAR(6) NULL ,
`date` DATE NULL ,
`time` VARCHAR(45) NULL ,
`added` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP ,
PRIMARY KEY (`id`) ,

CREATE TABLE IF NOT EXISTS `wc_team_has_match` (
`wc_team_id` INT NOT NULL ,
`wc_match_id` INT NOT NULL ,
PRIMARY KEY (`wc_team_id`, `wc_match_id`) ,

我简化了表格,这样我们就不会走错方向。现在我已经尝试了我能想到的各种连接和分组,但我似乎从来没有得到过。

示例查询:

SELECT t.wc_team_id, t.wc_match_id, c.id.c.name, d.id, d.name
FROM wc_team_has_match AS t
LEFT JOIN wc_match AS s ON t.wc_match_id = s.id
LEFT JOIN wc_team AS c ON t.wc_team_id = c.id
LEFT JOIN wc_team AS d ON t.wc_team_id = d.id

返回:

 wc_team_id  wc_match_id    id name      id name    
16 5 16 Brazil 16 Brazil
18 5 18 Argentina 18 Argentina

但我真正想要的是:

    wc_team_id  wc_match_id     id name      id name    
16 5 16 Brazil 18 Argentina

请记住,一个组有更多的匹配项,我希望看到所有这些匹配项,而不仅仅是一个。

任何指点或建议都将不胜感激,因为我对这个问题一头雾水 :)。

最佳答案

由于一场足球比赛总是由两支球队组成,不多也不少,而且顺序也很重要,因为有球队 1 和球队 2,我会简单地添加 team_1wc_match 中的 team_2 字段并删除 wc_team_has_match 表。

这将大大简化您的查询:

SELECT  m.wc_match_id, 
t1.id AS Team_1_ID,
t1.name AS Team_1,
t2.id AS Team_2_ID,
t2.name AS Team_2
FROM wc_match AS m
JOIN wc_team t1 ON (t1.id = m.team_1)
JOIN wc_team t2 ON (t2.id = m.team_2);

编辑:刚刚注意到您还打算在淘汰赛阶段保留有关比赛的信息,其中每场比赛的球队可能尚未确定。您仍然可以使用相同的模型,使 team_1team_2 可为空。在这种情况下,您可能希望使用 LEFT JOINs 而不是 INNER JOINs 来接收包含 NULL 团队的结果集。 SQL 中 NULL 的原因是定义未知信息,因此非常适合这种情况。

关于Mysql多对多问题(排行榜/记分牌),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2833115/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com