3 つのテーブルを結合しようとしていますが、クロス行データを取得しています (3 行ではなく 6 行を取得しています)。私は内側、左右を結合しようとしましたが、同じ結果になりました。手伝っていただけませんか。
表1
SELECT PATIENT,TDACTDATE,TDACTTIME,TDVALUE
FROM NurDocumentedResults A
WHERE (INTBASE = '400130')
AND (TDQUERY = 'NURPTVALUE')
AND (TDACTDATE = '20120425')
AND TDVALUE >='8.0' AND A.PATIENT='F126'
私が得ている結果
F126 20120425 1715 8.8
F126 20120425 1840 8.4
F126 20120425 2300 9.7
表 2
SELECT B.PATIENT,A.TESTRESULTDATE,A.TESTRESULTTIME,A.RESULT
FROM LabLSpecResultTests A
INNER JOIN LabLSpecimenFile B
ON A.URN=B.URN
AND A.TESTRESULTDATE=B.COLLECTIONDATE
WHERE A.TESTRESULTDATE='20120425'
AND (A.TEST IN ('100.0100', '100.0120', '100.0130', '100.0110'))
AND (A.RESULT > '8.0')
AND B.PATIENT='F126'
私が得ている結果
F126 20120425 1756 8.5
F126 20120425 2335 9.2
3 つのテーブルすべてを結合すると、
SELECT D.PATIENT,TDACTDATE,TDACTTIME,TDVALUE,A.RESULT,A.RESULTTIME,A.TESTRESULTDATE,A.TESTRESULTTIME
FROM NurDocumentedResults D
LEFT OUTER JOIN LabLSpecimenFile B
ON D.PATIENT=B.PATIENT AND D.TDACTDATE=B.COLLECTIONDATE
INNER JOIN LabLSpecResultTests A
ON A.URN=B.URN
AND A.TESTRESULTDATE=B.COLLECTIONDATE
WHERE (INTBASE = '400130')
AND (TDQUERY = 'NURPTVALUE')
AND (TDACTDATE = '20120425')
AND TDVALUE >='8.0'
AND A.TESTRESULTDATE='20120425'
AND (A.TEST IN ('100.0100', '100.0120', '100.0130', '100.0110'))
AND (A.RESULT > '8.0')
AND D.PATIENT='F126'
私は次の結果を得ています
F126 20120425 1715 8.8 8.5 2463 20120425 1756
F126 20120425 1840 8.4 8.5 2463 20120425 1756
F126 20120425 2300 9.7 8.5 2463 20120425 1756
F126 20120425 1715 8.8 9.2 22789 20120425 2335
F126 20120425 1840 8.4 9.2 22789 20120425 2335
F126 20120425 2300 9.7 9.2 22789 20120425 2335