连接表上的外连接

时间:2011-12-04 19:51:03

标签: sql sql-server

我正在使用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

这不会给菜单空值,如果我将第二个左边更改为右边,我会松散产品空值...

这样做的正确方法是什么?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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