如何使用Join联接三个Sql表的列数据

时间:2019-06-28 11:42:04

标签: sql sql-server join

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

我在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,表4第一行中的Usertyp,表4中的ID,表2第一行数据中的批号。我如何使用四个表数据将所有串行条目带到一个新表中。谢谢。

Table1 Table2 Table3 Table4

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

1 个答案:

答案 0 :(得分:1)

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

以下内容将帮助您到达那里,但是,没有足够的信息来匹配表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