【问题标题】:Multiple MySQL selects多个 MySQL 选择
【发布时间】:2012-11-13 22:54:14
【问题描述】:

我有一个查询,但我想从另一个表中添加另一个字段...

这是我现在使用的:

SELECT * 
FROM tournaments t , tournament_participants t1 
WHERE t.tournament_id = t1.tournament_id 
ORDER BY t1.tournament_id, t1.team_id;

这很好用,但我还想使用 team_id 作为此查询的一部分从团队表中获取团队名称...

我不知道该怎么做,有人可以帮忙吗?

【问题讨论】:

  • 实际上这取决于您的表格的结构方式。查看您的查询,人们如何看待其中使用了哪种参照完整性? :) 是否应该假设参与者表具有引用 taeam 表的外键?最好提供表架构和至少一些示例数据。

标签: mysql sql select join


【解决方案1】:

只需使用连接:

SELECT * FROM tournaments AS t 
LEFT JOIN tournament_partecipants AS tp ON t.tournament_id = tp.tournament_id 
LEFT JOIN team ON tp.team_id = team.team_id 
ORDER BY tp.tournament_id, tp.team_id

【讨论】:

  • 最后一个给了我我想要的,谢谢...其他人做了,但这个只给了我想要的数据。非常感谢帮助,我想我现在必须了解加入 :) 再次感谢所有评论的人。
【解决方案2】:

我不知道你有什么样的表模式。以下查询基于许多假设。所以我可能对你真正需要的东西有误。请看一下。

查询:

select p.pid, p.pname, t.id as teamID
from participants p
left join tournament tt
on p.ttnid = tt.tnid
inner join team t
on tt.tnid = t.ttid

结果:

PID     PNAME   TEAMID
1       john    10
2       tim     10
3       alex    20
4       ron     20
5       kate    30

参考:SQLFIDDLE

如果您需要任何不同的解决方案或进一步说明,请告诉我们:)

【讨论】:

    【解决方案3】:

    试试这个:

    SELECT t.*, t1.*, t2.name 
    FROM tournaments t 
    INNER JOIN tournament_participants t1 ON t.tournament_id = t1.tournament_id
    INNER JOIN teams t2 ON t1.team_id  = t2.team_id 
    ORDER BY t1.tournament_id, t1.team_id;
    

    【讨论】:

    • 感谢您的建议..最后一个实际上给了我想要的,其余的都做了,但有更多数据..
    猜你喜欢
    • 2021-10-28
    • 2013-10-12
    • 2013-11-08
    • 2011-04-14
    • 2014-02-16
    • 2011-02-26
    • 2013-01-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多