我有幾個表(確切地說,7個)我交叉連接的表。這部分給了我一些問題;SQL Server可選連接
表 「操作」
-----------------------------------------
| ID | Package ID | Action Type | Message |
-----------------------------------------
| 40 | 100340 | 0 | OK |
| 41 | 100340 | 12 | Error |
| 42 | 100340 | 2 | OK |
| 43 | 100341 | 4 | OK |
| 44 | 100341 | 0 | Error |
| 45 | 100341 | 12 | OK |
-----------------------------------------
表 「包」
----------------------
| ID | Name |
----------------------
| 100340 | Testpackage |
| 100341 | Package xy |
----------------------
我完成跨joingin THM,但在沒有Package
在Actions
指定的ID,所有對該軟件包的操作完全缺失,而不僅僅是空着 - 這正是我想要得到的結果。
所以,如果參考丟失,只留下相應的聯接的列空白或爲空字符串...:
----------------------------------------------------------------------
| Package ID | Name | Action 0 | Action 2 | Action 4 | Action 12 |
----------------------------------------------------------------------
| 100340 | Testpackage | OK | OK | | Error |
| 100341 | Package xy | Error | | OK | OK |
----------------------------------------------------------------------
這怎麼可能?
編輯
對不起,我剛纔看到我的例子是completety錯了,我更新了它應該如何看起來像到底。
我當前的查詢看起來是這樣的(如上面所說的,就像一個實際的三倍左右,只要其中甚至包括多個表的提取物)
SELECT
PackageTable.ID AS PackageID,
PackageTable.Name,
Action0Table.Message AS Action0,
Action2Table.Message AS Action2,
Action4Table.Message AS Action4,
Action12Table.Message AS Action12
FROM
Packages AS PackageTable LEFT OUTER JOIN
Actions AS Action0Table ON PackageTable.ID = Action0Table.PackageID LEFT OUTER JOIN
Actions AS Action2Table ON PackageTable.ID = Action2Table.PackageID LEFT OUTER JOIN
Actions AS Action4Table ON PackageTable.ID = Action4Table.PackageID LEFT OUTER JOIN
Actions AS Action12Table ON PackageTable.ID = Action12Table.PackageID
WHERE
Action0Table.ActionType = 0 AND
Action2Table.ActionType = 2 AND
Action4Table.ActionType = 4 AND
Action12Table.ActionType = 12
你能發表查詢嗎? – peacedog 2009-12-09 12:52:42
請注意,您未使用CROSS JOINS,您正在使用LEFT OUTER JOINS。 – 2009-12-09 13:31:37