SQL Server - 使用Join和多个条件进行查询

时间:2014-03-31 23:49:15

标签: sql sql-server join

我试图查询四个表格如下:

表1 :用户

User  | Name
-------------
01    | Phil
-------------
02    | John
-------------
03    | Marc
-------------
04    | Rob

订单:整数和增量/名称:varchar

表2 :状态

Status | Description
--------------------
   01  | Canceled
--------------------
   02  | Confirmed
--------------------
   03  | Bulding
--------------------
   ..  | .....
--------------------
   15  | Finished

状态:整数和增量/描述:varchar

表3 :构建

 Order |    Date    | Place
----------------------------
   01  | 01/01/2014 |  MG
----------------------------
   02  | 02/02/2014 |  SP
----------------------------
   05  | 03/03/2014 |  BA

订单:整数/日期:日期/地点:Varchar

表4 :订单

Order | User | Status
-----------------------
01    |  02  |   01
-----------------------
02    |  01  |   11
-----------------------
03    |  03  |   15
-----------------------
04    |  01  |   03
-----------------------
05    |  04  |   02

顺序:整数和增量/用户:整数/状态:整数

我必须查询表4,以显示所有订单(状态1,15除外)加入表01,表02和表03按日期排序在表03.问题是表03并不总是有一行订单号码和此订单在查询时不显示。

我需要这样的结果:

查询结果

Order | User | Name | Status | Description |   Date     | Place
----------------------------------------------------------------
02    |  01  | Phil |   11   |  Painting   | 02/02/2014 |  SP
----------------------------------------------------------------
05    |  04  | Rob  |   02   |  Confirmed  | 03/03/2014 |  BA
----------------------------------------------------------------
04    |  01  | Phil |   03   |  Bulding    |            |

感谢您的帮助!!!

1 个答案:

答案 0 :(得分:0)

使用" LEFT OUTER JOIN"对于表3.这将返回其他表中的所有记录,表3中的匹配,如果表3不匹配,它将显示为空白。

例如:

SELECT *
FROM Orders
LEFT OUTER JOIN Build ON Order.Order = Build.Order

这将返回Orders的所有结果以及Build中的匹配项。注意,要保留所有记录的表必须位于ON语句的左侧(ON Order.Order = Build.Order)。

更多信息:http://technet.microsoft.com/en-us/library/ms187518%28v=SQL.105%29.aspx