从一个表查看数据但基于其他表(SQL Server)

时间:2017-06-09 07:46:13

标签: sql sql-server

我想显示表程序的所有信息,但它必须基于其他表(即Line),我尝试使用join但它将显示来自ALL TABLE的所有信息。

有人可以帮我创建查询或只是告诉我应该怎么做。

TABLE LINE 
------------
LineName

TABLE PACKAGE
-------------
PackageNo
PackageName
Line

TABLE FAMILY
------------
FamilyCode 
FamilyName
TestQuant

TABLE PROGRAM
-------------
FamilyName
TestType
FolderPath
TestProgram
Remark
CreateTime

这就是我所做的

SELECT * FROM Program AS D
JOIN Family AS Q ON D.FamilyName = Q.FamilyName
JOIN Process AS V ON Q.TestQuant = V.PackageNo
JOIN Line AS R ON R.LineName = V.Line
WHERE V.Line = 'LINE1'

我有什么变化

SELECT DISTINCT D.FamilyName, D.TestType, D.FolderPath, D.TestProgram, D.Remark, 
D.CreateTime
FROM Program D
INNER JOIN Family Q ON D.FamilyName = Q.FamilyName
INNER JOIN Process V ON Q.TestQuant = V.PackageNo
INNER JOIN Line R ON R.LineName = V.Line
WHERE V.Line = 'LINE1'

2 个答案:

答案 0 :(得分:0)

如果您只需要Program表中的数据,请尝试:

SELECT D.FamilyName, D.TestType, D.FolderPath, D.TestProgram, D.Remark, D.CreateTime
FROM Program D
JOIN Family Q ON D.FamilyName = Q.FamilyName
JOIN Process V ON Q.TestQuant = V.PackageNo
JOIN Line R ON R.LineName = V.Line
WHERE V.Line = 'LINE1'

答案 1 :(得分:0)

听起来你可能需要一个左外连接或右外连接。这是一个示例问题,对答案中的JOIN有一些非常好的解释,维恩图真的帮助我理解:

SQL JOIN and different types of JOINs

如何构建联接的示例(取自Techonthenet

SELECT columns
FROM table1
RIGHT [OUTER] JOIN table2
ON table1.column = table2.column;

希望这有帮助,SQL JOIN可能有点难以理解。