2011-12-04 70 views
0

我正在使用mssql連接表上的外連接

如何在三個表上進行外連接,其中之一是連接表?

菜單或產品表中可能存在空值,我需要這些值包含在結果中。

SELECT * 
from [web].[dbo].[tblMenus] 
left outer JOIN [web].[dbo].[tblProductsRelMenus] 
on [tblMenus].Id = [tblProductsRelMenus].MenuId 
left outer JOIN [web].[dbo].[tblProducts] 
on [tblProductsRelMenus].ProductId = [tblProducts].ProductId 

這並沒有給菜單空,如果我第二左更改爲正確的,我失去了產品空...

什麼是做這種正確的方法是什麼?

+0

? – Oded

+0

您正在尋找完整的外連接。 – danihp

+0

[可能] [a] [數據庫] [那] [需要] [一] [很多] [的] [角度] [括號] [。] – wildplasser

回答

2

也許你正在尋找一個full outer join

SELECT * 
from [web].[dbo].[tblMenus] 
full outer JOIN [web].[dbo].[tblProductsRelMenus] 
on [tblMenus].Id = [tblProductsRelMenus].MenuId 
full outer JOIN [web].[dbo].[tblProducts] 
on [tblProductsRelMenus].ProductId = [tblProducts].ProductId 
+0

注意:第一個完整外連接不是必需的。第一個可能是左外部。 – danihp

0
SELECT * 
FROM 
     [web].[dbo].[tblMenus] 
    LEFT JOIN 
      [web].[dbo].[tblProductsRelMenus] 
     RIGHT OUTER JOIN 
      [web].[dbo].[tblProducts] 
      ON [tblProductsRelMenus].ProductId = [tblProducts].ProductId 
     ON [tblMenus].Id = [tblProductsRelMenus].MenuId 
您正在使用什麼數據庫