【问题标题】:Relating two foreign key columns in Table A to a primary key column in Table B将表 A 中的两个外键列与表 B 中的主键列相关联
【发布时间】:2014-08-22 16:42:36
【问题描述】:

我有一个困扰我好几天的问题。我也在网上搜索过,但无济于事...也许我一直在使用错误的搜索主题作为新手。

我有两个表和它们各自的列:

Table A: A_Id (int, PK); user1 (int); user2 (int)
Table B: B_Id (int, PK); name (nvarchar)

User1 & user2 是 B_Id 的外键。我的任务是编写一个 SQL select 语句,它将显示下表:

Column Headings:      A_Id  User1   User2
Row records1:          1    Adam    Joe
Row records2:          2    John    Peter

我想将此应用到我尝试使用 SQL Server 2008 R2 创建的消息传递数据库。

这可能吗?或者有什么更好的方法可以实现这一目标?

请帮帮我。提前致谢。

【问题讨论】:

  • 糟糕,对于集群文本非常抱歉。非常感谢。

标签: .net sql-server sql-server-2008-r2


【解决方案1】:

您需要加入AB 两次:

SELECT a_id, b1.name AS user1, b2.name AS user2
FROM   a
JOIN   b AS b1 ON a.user1 = b.b_id
JOIN   b AS b2 ON a.user2 = b.b_id

【讨论】:

  • 感谢穆雷尼克。我会应用你的代码并及时给你反馈。
  • 我不断收到错误“无效的列名 'name”。请指教。
  • 应该是显式的 INNER JOIN。如果您的数据库区分大小写,您可能需要将答案编辑为“A_Id”,并确保所有列引用的大小写正确。
  • 干得好,伙计们。我按照 pmbAustin 的建议在 mureinik 的代码上使用了 INNER JOIN,它运行成功。但是,我仍然收到上面的错误消息。谁能解释一下?
【解决方案2】:

下面的查询会帮助你

SElect A_ID ,B.name,c.name
FROM A LEFT OUTER JOIN B ON A.user1 = B.B_Id
   LEFT OUTER JOIN c ON A.user2 = C.B_Id

【讨论】:

  • 感谢 Pragnesh。测试您的代码后,我会尽快回复您。
  • 请看我上面的评论。你的代码看起来是对的,但我不知道我做错了什么。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-13
  • 2021-07-16
  • 1970-01-01
  • 1970-01-01
  • 2018-06-13
  • 2012-09-11
相关资源
最近更新 更多