Sql 检索4个表的完全外部联接中的可用标题

Sql 检索4个表的完全外部联接中的可用标题,sql,tsql,Sql,Tsql,我需要合并4个不同属性表的输出。所有表都有不同的行数。目前我有以下问题: CREATE VIEW vw_Items AS SELECT a.Countryname ,a.Itemname ,ISNULL(a.Colour,'None') as Colour ,ISNULL(b.Location,0) as Location ,ISNULL(c.Size,0) as Size ,ISNULL(d.Weig

我需要合并4个不同属性表的输出。所有表都有不同的行数。目前我有以下问题:

    CREATE VIEW vw_Items

AS
SELECT   a.Countryname
        ,a.Itemname
        ,ISNULL(a.Colour,'None') as Colour
        ,ISNULL(b.Location,0) as Location
        ,ISNULL(c.Size,0) as Size
        ,ISNULL(d.Weight,0) as Weight

FROM ItemColour a

FULL OUTER JOIN ItemLocation b 
    ON a.Countryname = b.Countryname 
    AND a.Itemname= b.Itemname
FULL OUTER JOIN ItemSize c 
    ON a.Countryname = c.Countryname 
    AND a.Itemname= c.Itemname
FULL OUTER JOIN ItemWeight d 
    ON a.Countryname = d.Countryname 
    AND a.Itemname= d.Itemname
所以,问题在于表a中的NULL countryname和Itemname,我认为需要对其进行嵌套,但是有更好的方法来处理这个问题吗


谢谢。

我想您可能想要:

SELECT ci.Countryname, ci.Itemname
       COALESCE(c.Colour, 'None') as Colour,
       COALESCE(l.Location, 0) as Location
       COALESCE(s.Size, 0) as Size
       COALESCE(w.Weight, 0) as Weight
FROM ((SELECT c.countryname, c.itemname
       FROM ItemColour c
      ) UNION  -- on purpose to remove duplicates
      (SELECT l.countryname, l.itemname
       FROM ItemLocation c
      ) UNION
      (SELECT s.countryname, s.itemname
       FROM ItemSize
      ) UNION
      (SELECT w.countryname, w.itemname
       FROM ItemWeight w
      ) 
     ) ci LEFT JOIN
     ItemColor c
     ON c.countryname = ci.countryname AND
        c.itemname = ci.itemname LEFT JOIN
     ItemLocation l
     ON l.countryname = ci.countryname AND
        l.itemname = ci.itemname LEFT JOIN
     ItemSize s
     ON s.countryname = ci.countryname AND
        s.itemname = ci.itemname LEFT JOIN
     ItemWeight w
     ON w.countryname = ci.countryname AND
        w.itemname = ci.itemname ;

提供样本数据和预期结果。解释在结果集中你想要什么<代码>完全连接几乎不需要,而且不清楚您想做什么。有趣。我会查一查再给你回复。谢谢。是的,这比我的更好,我可能有两行用于同一个国家/项目组合,而你的则消除了这个问题,并且工作得更快。6秒对7秒。