首页 > 解决方案 > 如何使用Join连接三个Sql表的列数据

问题描述

我有四个表,我必须在其中加入数据列。我使用了交叉连接,最后我得到一些重复两次或多次的值。请帮忙。

我在我的 sql 脚本代码中尝试过的事情是:

CREATE VIEW [dbo].[View_1]
AS
SELECT dbo.Table3.ID, dbo.Table4.Usertyp, dbo.Table4.reserved, dbo.Table2.Lotnumber, dbo.Table3.Current, dbo.Table3.Reading, dbo.Table1.LoginName, dbo.Table3.Start
FROM     dbo.Table1 CROSS JOIN
                  dbo.Table2 CROSS JOIN
                  dbo.Table3 CROSS JOIN
                  dbo.Table4
GO

然后当我执行时,我多次输入数据,我做错了什么。请帮忙。我需要表 3 中的 ID,Table4 第一行中的 Usertyp,table4 中保留,Table2 第一行数据中的 Lotnumber。我如何使用四个表数据将所有串行条目带到一个新表中。谢谢你。

表格1 表2 表3 表4

最终结果是。我想要表 3 中的 ID 和其他表列中的相应数据: 最终输出应如下所示, 表5

标签: sqlsql-serverjoin

解决方案


问题是您正在使用交叉连接。不要那样做。这结合了每个组合中每个表的每一行。那会很快变得丑陋。

以下内容应该可以帮助您到达那里,但是,没有足够的信息来匹配您的表 4。所以一旦你弄清楚了,你应该能够继续我列出的这种方法:

CREATE VIEW [dbo].[View_1]
AS
SELECT   dbo.Table3.ID
       , dbo.Table4.Usertyp
       , dbo.Table4.reserved
       , dbo.Table2.Lotnumber
       , dbo.Table3.Current
       , dbo.Table3.Reading
       , dbo.Table1.LoginName
       , dbo.Table3.Start
FROM       dbo.Table3 t3
INNER JOIN dbo.Table1 t1 on t3.UserID = t1.ID
INNER JOIN dbo.Table2 t2 on t3.LotID = t2.LotID
INNER JOIN dbo.Table4 ....
GO

推荐阅读