mysql - 体育比赛 MySQL 查询以特定顺序加入比赛和球队
问题描述
我想为运动比赛创建一个数据库。
一支球队可以有 0 场或 1 场比赛。一场比赛总是有 2 支球队。
我必须存储的示例数据:
- 比赛开始时间
- A 和 B 的团队名称
- A 和 B 的分数
我考虑为match和team创建一个表。Match得到了A和B的开始时间和外键。Team得到了名字和得分。
现在我的问题/问题:
我想搜索一个团队名称并收到这样的表格:
--------------------------------------------------------------------
Start | SearchedName | SearchedScore | OpponentName | OpponentScore
... | ... | ... | ... | ...
我怎样才能做到这一点?
解决方案
您通常会加入该team
表两次。
假设如下表结构:
table: "matches"
id_team_a
id_team_b
start_time
...
table: "teams"
id_team
name
你会去:
select
m.*,
ta.name team_name_a,
tb.name team_name_b
from matches m
inner join teams ta on ta.id_team = m.id_team_a
inner join teams tb on tb.id_team = m.id_team_b
如果您想通过搜索来处理:
select
m.*,
case when ta.name = @myteam then ta.name else tb.name end search_name,
case when ta.name = @myteam then tb.name else ta.name end opponent_name
from matches m
inner join teams ta on ta.id_team = m.id_team_a
inner join teams tb on tb.id_team = m.id_team_b
where @myteam in (ta.name, tb.name)
推荐阅读
- rust - 关联类型超特征的别名
- ie11-developer-tools - IE 11 缺少请求标头
- javascript - 使用 React Select 自定义验证消息
- java - Apache Beam:未指定 Runner,并且在类路径中未找到 DirectRunner
- python - 如何将 Python Tensorflow Session Run Call 转换为 Tensorflow 的 C++ API
- javascript - 如何为每个请求添加拦截器以防止缓存请求
- rx-java2 - 任意数量的 Observable::flatMap 调用链
- python - 使用 SQLite 在 SqlAlchemy ORM 中发生冲突
- android - 无形的无限循环
- java - ChannelId 会改变吗?