【问题标题】:How to do a mysql select query on a table with two columns of foreign keys that relate to another table of names如何对具有与另一个名称表相关的两列外键的表执行 mysql 选择查询
【发布时间】:2019-11-11 07:37:07
【问题描述】:

我有两个表,表 A 有两个外键列(div_player1_iddiv_player2_id),Table B 有一个与 Table A 中的外键相关的主键。我正在尝试编写一个选择查询,它将在一行中输出player1player 2 的名称。

wp_divisions - Div_id, div_player1_id, div_player2_id
wp_players - ID, display_name

Output = Div_Id, display_name of Player1, display_name of Player2

Select display_name FROM wp_players INNER Join wp_divisions where wp_players.ID = wp_divisions.div_player1_id;

这显示了 Player1 的名称。

Select display_name FROM wp_players INNER Join wp_divisions where wp_players.ID = wp_divisions.div_player2_id;

这显示了 Player2 的名字。

我想将输出放在一个表格中:

Division    Player 1     Player 2
  1001     Joe Smith     Tom Jones

我尝试关注Table with two foreign keys pointing to the same column of another table

但无法适应我的需要

不知道怎么写代码。

【问题讨论】:

  • (显然--)这是一个常见问题。在考虑发布之前,请始终在谷歌上搜索任何错误消息以及您的问题/问题/目标的许多清晰、简洁和准确的措辞,包括和不包括您的特定字符串/名称;阅读许多答案。如果您发布问题,请使用一个短语作为标题。请参阅How to Ask 和投票箭头鼠标悬停文本。 PS 解释你如何“无法适应我的需要”。还有很多很多其他的重复项呢?
  • 请在代码问题中给出minimal reproducible example--剪切&粘贴&运行代码;具有期望和实际输出的示例输入(包括逐字错误消息);标签和明确的规范和解释。这包括您可以提供的最少代码,即您显示的代码可以通过您显示的代码扩展为不可以。 (调试基础。)

标签: mysql select inner-join


【解决方案1】:

您必须加入wp_divisionswp_players 两次:

select
  d.Div_id,
  p1.display_name player1,
  p2.display_name player2
from wp_divisions d
inner join wp_players p1 on p1.ID = d.div_player1_id
inner join wp_players p2 on p2.ID = d.div_player2_id

如果div_player1_iddiv_player2_idnull,则使用left 连接而不是inner 连接。

【讨论】:

  • 完美运行。添加到此,如果 d.div_player2_id = 0,则设置 d.div_player2_id = 125; select d.player_div_id AS Division, p1.display_name player1, p2.display_name player2 from wp_divisions d inner join wp_players p1 on p1.ID = d.div_player1_id inner join wp_players p2 on p2.ID = d.div_player2_id WHERE IF (d.div_player2_id IS 0, d.div_player2_id IS 125);失败
  • 什么是WHERE IF (d.div_player2_id IS 0, d.div_player2_id IS 125)?使用WHERE d.div_player2_id = 0 AND d.div_player2_id = 125)
  • 本意是用 125 替换 0
  • 在表中 wp_divisions 是玩家 1 和玩家 2。对于单打,玩家 2 的 ID 为 0。对于双打,玩家 2 的 ID 不是 0。双打,但当是单打时,找不到任何信息。我创建了一个具有 display_name = 空白的 Player id 125。
  • 这个单打和双打你可能明白,但我不明白。我看不出同一个玩家有 2 个不同 ID 的桌子设计是如何工作的。此答案包含与您发布的问题相关的代码。如果要求不同,请发布一个新问题并解释您想要什么。
猜你喜欢
  • 2011-03-20
  • 1970-01-01
  • 2022-08-18
  • 2021-03-25
  • 2020-01-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多