【问题标题】:SQL Server Query problemSQL Server 查询问题
【发布时间】:2011-03-17 03:49:07
【问题描述】:

我想从你们那里得到很多帮助 :( 好的,我的问题是如何创建一个满足我需求的查询。我有 3 个表,即 TableA(ColID, ColName, ColRec)TableB (ColRec, bID)TableC(bID, xGrade, xTake, ColID)

样本记录

当我从TableA 搜索ColID 时,我想显示来自TableC 的所有xGrade,如下所示:

但我得到的不是上面的结果:

它还显示与TableB 中的bIDTableC 中的bID 匹配的所有记录。

如果没有这个查询,我无法完成我的项目 :( 请帮帮我..

提前致谢!

【问题讨论】:

  • @rsbarro : 我从 TableA 的其他记录中得到结果,但显示的 ColID 与搜索的 ColID 相同
  • 你能编辑一下帖子的标题吗,它目前在“SQL Server 查询问题”旁边没用

标签: sql sql-server tsql


【解决方案1】:
SELECT 
    A.ColID, B.bID, C.xGrade 
FROM 
    TableA A 
INNER JOIN 
    TableB B ON A.ColRec =  B.ColRec 
LEFT JOIN 
    TableC C on B.bID = C.bID AND A.ColID = C.ColID 
WHERE 
    A.ColID  = 1

这行得通吗?

【讨论】:

  • 是的,但它缺少来自 TableC 的记录。我仍然想从 TableB 中显示 A4(NULL 值)的记录,即使它在 tableC 上不存在。
  • 左连接应该解决这个问题
  • 左连接显示来自 tableA 的 ColID 的其他记录的 xGrade,只要它与来自 TableB 和 TableC 的出价匹配
  • 如果您发布代码、XML 或数据示例,在文本编辑器中突出显示这些行,然后单击编辑器上的“代码示例”按钮 ({ })工具栏以很好地格式化和语法突出显示它!
  • @johntotetwoo:你为什么会这样认为?你试过了吗?这个查询对我来说似乎很好。我正要发布我的解决方案,但后来我意识到它与这个相同。否则,您在描述问题时可能会遗漏一些重要的细节。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-28
  • 1970-01-01
  • 2023-01-18
相关资源
最近更新 更多