当前位置: 首页 > 面试题库 >

具有多个外键链接到同一主键的表(2)

孔甫
2023-03-14
问题内容

只是为了扩展我以前的问题-我的数据库中有两个表,我想提取某些信息。下表:

   (player): player_id (primary), playerName
    (match): match_id (primary), playerID1, playerID2, playerID3, scorer etc..

您向我提供了以下代码来获取播放器的名称:

SELECT p.Name 
FROM `match` m
INNER JOIN `player` p 
    ON p.player_id IN (m.playerID1, m.playerID2, m.playerID3) //etc

效果很好,谢谢-我只想进行两项调整:

  1. 我想返回得分手的名字以及球员的名字。由于m.scorer是一个ID,如果p.Name已被映射到m.playerID,我如何将其映射到p.Name属性?
  2. 上面的查询返回所有玩家的姓名。我很快就会添加搜索功能,您可以在其中搜索特定玩家的所有比赛。无论如何,有没有从结果中排除该球员(看来我们已经知道该球员正在寻找中,所以在比赛中)。因此,几乎所有的比赛以及同一个球员的其他球员都将返回,但从结果中排除实际搜索到的球员。抱歉,如果不清楚,请告诉我,我会继续介绍。

问题答案:

尝试类似以下的操作(假设字段名称)。它将显示玩家的姓名,比赛的matchId以及他们是否在该比赛中得分:)。

SELECT p.Name as 'Player Name', m.matchId as 'Match Id',
CASE s.scorerId WHEN ISNULL(S.SCORERID,0) THEN 'YES' ELSE 'NO' END as 'Scored?',
s.name as 'Scorer Name' --as requested from comment
FROM match m
INNER JOIN player p ON p.player_id IN (m.playerID1, m.playerID2, m.playerID3)
LEFT JOIN scorer s ON s.matchId = m.matchId
    AND s.player_id IN (m.playerID1, m.playerID2, m.playerID3)

看到这个SQLFiddle HERE



 类似资料:
  • 我正在拉维尔创建一个项目。我有两个数据库表,它们是通过迁移创建的:我想在数据库模式中设置多个外键。 表用户 我想知道的是如何描述模型中的关系? 编辑: 我计划使用此关系,每个用户都属于部门,任何部门都有多个用户,每个用户只有一个部门

  • 问题内容: 我正在开发一个将用作其他应用程序的可扩展框架的应用程序。 基本类之一称为节点,节点具有内容。SQL表如下所示: TABLE节点(NodeId int,....等) 表格NodeContentRelationship(NodeId int,ContentType字符串,ContentId int) 开发人员可以扩展应用程序以创建自己的内容类型。 显然,从关系数据库的角度来看,这很不好,因

  • 问题内容: 我正在尝试建立一个PostgreSQL表,该表具有两个指向另一个表中相同主键的外键。 运行脚本时出现错误 sqlalchemy.exc.AmbiguousForeignKeysError:无法确定关系Company.stakeholder的父/子表之间的联接条件- 有多个链接表的外键路径。指定“ foreign_keys”参数,提供这些列的列表,这些列应被视为包含对父表的外键引用。 那

  • 问题内容: 为简化起见,我有两个使用外键一对一关联的表,例如: 一个用户可能有很多动作,也可能没有。我需要一个sql select来返回在actions表中没有user_id值的用户id。 所以我需要一个返回用户ID 2(Smith)的SQL查询,因为外键值不包含ID 2 我尝试了以下SQL,但它返回了所有用户ID: 问题答案:

  • 问题内容: 我想要一个带有来自同一表的2个外键的Django模型。这是一个事件表,其中有两列用于员工:“参与者”和“接收者”。但是我得到这个错误: 错误:一个或多个模型未通过验证:tasks.task:中间模型TaskEvent具有多个到Employee的外键,这是模棱两可的,不允许使用。 有没有更好的方法对此建模?谢谢 我想我要添加一张桌子。其中有两个记录,每个与之相关的两个雇员中的每个。有人知

  • 在一个表中有两列可以是来自同一表的外键,这样可以吗? 例如: 我有一个“address”表,表中有列: id,street,city_id,state,country(或id,street,city_id,state_id,state_id) 我有一个'states'表,保存状态和国家:id、name、level 那么我可以把states_id放在地址表的state和country中吗(如上面的括