我正在使用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 :(得分: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