【问题标题】:SQL lookup table with multiple IDs per row每行有多个 ID 的 SQL 查找表
【发布时间】:2013-07-07 00:14:09
【问题描述】:

我正在使用 Retrosheet 棒球逐场比赛数据库来帮助我学习 SQL(使用 mySQL)。它有一个名为 games 的表格,提供有关所有比赛的一般信息:日期、体育场、球队、比分等。它还提供有关球员的信息,如首发投手、阵容、裁判等。但是,所有人都被标记使用 ID。我有一个查找表,它将所有 ID 与名字和姓氏相匹配。

如果我想从匹配特定游戏的游戏数据库中选择 *,但我想从 ID 表中返回名称而不是 ID,有没有办法做到这一点?

更具体地说,假设我想从游戏中选择 game_ID、home_team_id、away_team_id、home_start_pit_id、away_start_pit_id。我想要的是两个投手的真实姓名而不是身份证。

【问题讨论】:

  • 你学过表连接吗?如果没有,请阅读此主题。联接是 SQL 的一个基本方面,每个 SQL 教程都涵盖了这些内容。
  • 我尝试过join,但不知道如何返回多个名称,下面的答案是我不知道该怎么做。
  • 如果你选择 BaseballGame、StartingPlayerName、Team、Position where team ='home' 你会得到 9 行。这就是 SQL 的工作原理。通常将多个玩家放在同一行是表示层的责任。但是在SQL中,可以做到;要在这样的查询中让多个玩家出现在同一行,您必须使用 PIVOT 执行高级 SQL。

标签: mysql


【解决方案1】:

假设有一个名为“pitchers”的表,其中包含字段 id、first_name、last_name(和其他)

你会做一个简单的连接。

select game_id, home_team_id,home_team_id, away_team_id,
   home_team_pitcher.first_name, home_team_pitcher.last_name,
   away_team_pitcher.first_name, away_team_pitcher.last_name
   from games
   join pitchers as home_team_pitcher on pitchers.id = home_start_pit_id
   join pitchers as away_team_pitcher on pitcher.id = away_start_pit_id

【讨论】:

  • 工作就像一个魅力!谢谢。
猜你喜欢
  • 2016-05-26
  • 1970-01-01
  • 1970-01-01
  • 2023-03-16
  • 2017-11-23
  • 2021-10-04
  • 1970-01-01
  • 1970-01-01
  • 2018-01-27
相关资源
最近更新 更多