0

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
4

1 に答える 1

0

推奨事項: 最初のテーブルから、他の 2 つを結合する Select ステートメントに結合することができます。実際のクエリを書いていないことをお詫びします。Linux を使用しているため、このマシンにはクエリを作成するための SQL がありません。

Select TableA.* from TableA LEFT JOIN (SELECT Fields From TableB LEFT JOIN TABLEC ON TableB ... = TableC ) AS JOIN_TABLE ON TableA.Field = JOIN_TABLE.Field のようなものを試してください

このようなことを試してみてください。あなたが望むように動作するかもしれません。

于 2012-08-23T23:01:22.977 に答える