SQL视图未加入

SQL视图未加入,sql,sql-server,Sql,Sql Server,我有两张有Zipcode的桌子,每张桌子上的Zipcode都是一样的。列数据类型相同,大小也相同。有人知道为什么我的视图没有被正确更新吗?第二个表总是显示NULL。谢谢 USE [DB] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER VIEW [dbo].[myview] AS SELECT dbo.Table1.Division, dbo.Table1.RegionName AS Region, dbo.Table

我有两张有Zipcode的桌子,每张桌子上的Zipcode都是一样的。列数据类型相同,大小也相同。有人知道为什么我的视图没有被正确更新吗?第二个表总是显示NULL。谢谢

USE [DB]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER VIEW [dbo].[myview]
AS
SELECT     dbo.Table1.Division, dbo.Table1.RegionName AS Region, dbo.Table1.AccountDir AS RegionManager, dbo.Table2.key, 
                      dbo.Table2.ZipCode, dbo.Table3.ZipCity, dbo.Table3.ZipCounty, dbo.Table3.ZipState
FROM         dbo.Table2 LEFT OUTER JOIN
                      dbo.Table1 ON dbo.Table2.key = dbo.Table1.key LEFT OUTER JOIN
                      dbo.Table3 ON dbo.Table2.ZipCode = dbo.Table3.ZipCode

ZipCodes就是这样的05412。正常的5位数拉链。

我必须查看您的数据才能给出可靠的答案,但我怀疑表2中没有符合条件的记录:

dbo.Table2.key = dbo.Table1.key
由于在此条件下执行左联接,因此表1中没有匹配记录的每个记录都将返回空值

请阅读本文,以更好地了解不同类型的联接是如何工作的:


我必须查看您的数据才能给出可靠的答案,但我怀疑表2中没有符合条件的记录:

dbo.Table2.key = dbo.Table1.key
由于在此条件下执行左联接,因此表1中没有匹配记录的每个记录都将返回空值

请阅读本文,以更好地了解不同类型的联接是如何工作的:


我将提出一些建议,如果
ZipCode
字段上的数据类型是
varchar
,那么您可能会遇到空白问题,因此您可以尝试修剪该值以删除任何空白。如果存在空白,则无法匹配记录:

SELECT dbo.Table1.Division, 
    dbo.Table1.RegionName AS Region, 
    dbo.Table1.AccountDir AS RegionManager, 
    dbo.Table2.key, 
    dbo.Table2.ZipCode, 
    dbo.Table3.ZipCity, 
    dbo.Table3.ZipCounty, 
    dbo.Table3.ZipState
FROM  dbo.Table2 
LEFT OUTER JOIN dbo.Table1 
    ON dbo.Table2.key = dbo.Table1.key 
LEFT OUTER JOIN dbo.Table3 
    ON LTRIM(RTRIM(dbo.Table2.ZipCode)) = LTRIM(RTRIM(dbo.Table3.ZipCode))

但是您需要确保您的数据存在于所有表中。否则你就不会有结果

我将提出一些建议,如果
ZipCode
字段上的数据类型是
varchar
,那么您可能会遇到空白问题,因此您可以尝试修剪该值以删除任何空白。如果存在空白,则无法匹配记录:

SELECT dbo.Table1.Division, 
    dbo.Table1.RegionName AS Region, 
    dbo.Table1.AccountDir AS RegionManager, 
    dbo.Table2.key, 
    dbo.Table2.ZipCode, 
    dbo.Table3.ZipCity, 
    dbo.Table3.ZipCounty, 
    dbo.Table3.ZipState
FROM  dbo.Table2 
LEFT OUTER JOIN dbo.Table1 
    ON dbo.Table2.key = dbo.Table1.key 
LEFT OUTER JOIN dbo.Table3 
    ON LTRIM(RTRIM(dbo.Table2.ZipCode)) = LTRIM(RTRIM(dbo.Table3.ZipCode))

但是您需要确保您的数据存在于所有表中。否则你就不会有结果

使用批量加载命令上载csv时出现格式问题。。。我将其导入access数据库,然后将其导入sql数据库,没有任何问题。0dd

使用批量加载命令上载csv时出现格式问题。。。我将其导入access数据库,然后将其导入sql数据库,没有任何问题。0dd

您能提供代码吗?现在只是猜测。
zipcode
字段的数据类型是什么?你能为这些字段发布一些示例数据吗?您确定两个表中都有邮政编码吗?您能提供邮政编码吗?现在只是猜测。
zipcode
字段的数据类型是什么?你能为这些字段发布一些示例数据吗?您确定两个表中都存在邮政编码吗?如何查看每个单元格中数据的详细信息?我已经填充了表,但是由于某种原因zipcode没有连接在一起。在
表2
上选择一个,在
表3
上单独选择一个,看看
zipcode
字段中是否有数据。它在那里,我就是想不出为什么它没有连接在一起。@Intelwalk你能编辑你原来的问题并为它发布一些示例数据吗每张桌子?或者更好地使用数据创建一个单元格。如何查看每个单元格中数据的详细信息?我已经填充了表,但是由于某种原因zipcode没有连接在一起。在
表2
上选择一个,在
表3
上单独选择一个,看看
zipcode
字段中是否有数据。它在那里,我就是想不出为什么它没有连接在一起。@Intelwalk你能编辑你原来的问题并为它发布一些示例数据吗每张桌子?或者更好地用这些数据创建一个