sql-server – SQL Server:具有WHERE子句的多表连接

栏目: 数据库 · 发布时间: 7年前

内容简介:http://stackoverflow.com/questions/8758223/sql-server-multiple-table-joins-with-a-where-clause

我正在使用SQL Server,我很难想从我想要的SELECT查询中获取结果.我尝试加入不同的订单和使用子查询,但没有什么是我想要的方式.拿这个具有不同版本级别的软件应用程序的例子,可能安装在人民币计算机上.

我需要执行一个附加的地方,但由于某种原因,我无法得到我想要的结果.

也许我正在看我的数据错误,我不太确定为什么我不能让这个工作.

申请表

ID  Name
1   Word
2   Excel
3   Powerpoint

软件表(包含不同应用程序的版本信息)

ID  ApplicationID   Version
1   1             2003
2   1             2007
3   2             2003
4   2             2007
5   3             2003
6   3             2007

软件计算机连接表

ID  SoftwareID  ComputerID
1   1           1
2   4           1
3   2           2
4   5           2

电脑桌

ID  ComputerName
1   Name1
2   Name2

我想要一个查询,我可以运行我选择一个特定的计算机来显示什么软件版本和应用程序,但我也希望它显示什么应用程序它没有(版本将是一个空的,因为它没有那个软件就可以了)

SELECT Computer.ComputerName, Application.Name, Software.Version
FROM Computer
JOIN Software_Computer
    ON Computer.ID = Software_Computer.ComputerID
JOIN Software
    ON Software_Computer.SoftwareID = Software.ID
RIGHT JOIN Application
    ON Application.ID = Software.ApplicationID
WHERE Computer.ID = 1

我想要以下结果集

ComputerName   Name          Version
Name1          Word          2003
Name1          Excel         2007
Name1          Powerpoint    NULL

但我只是得到

Results
ComputerName   Name          Version
Name1          Word           2003
Name1          Excel          2007

我认为RIGHT JOIN将包括应用程序表中的所有结果,即使它们与计算机无关.我缺少/做错了什么?

使用LEFT JOIN或RIGHT JOIN时,无论您将滤镜放在“WHERE”还是“JOIN”中,都有所不同.

看到这个答案我刚才写的一个类似的问题:

What is the difference in these two queries as getting two different result set?

简而言之:

>如果把它放入WHERE子句(就像你所做的那样),与该计算机无关的结果被完全过滤掉

>如果你把它放在JOIN中,那么与查询结果不相关的结果就出现在查询结果中,只有NULL值

– >这是你想要的

http://stackoverflow.com/questions/8758223/sql-server-multiple-table-joins-with-a-where-clause


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Spring揭秘

Spring揭秘

王福强 / 人民邮电出版社 / 2009.8 / 99.00元

没有教程似的训导,更多的是说故事般的娓娓道来,本书是作者在多年的工作中积累的第一手Spring框架使用经验的总结,深入剖析了Spring框架各个模块的功能、出现的背景、设计理念和设计原理,揭开了Spring框架的神秘面纱,使你“知其然,更知其所以然”。每部分的扩展篇帮助读者活学活用Spring框架的方方面面,同时可以触类旁通,衍生出新的思路和解决方案。 本书内容全面,论述深刻入理,必将成为每......一起来看看 《Spring揭秘》 这本书的介绍吧!

MD5 加密
MD5 加密

MD5 加密工具

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具