我想显示表程序的所有信息,但它必须基于其他表(即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'
答案 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可能有点难以理解。