我试图查询四个表格如下:
表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 | |
感谢您的帮助!!!
答案 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