0

2 つのテーブルがあります。

訪問 (親) VisitDocs (子)

少なくとも docType 3 を持ち、DocType 1 と 2 を持たないすべての訪問を表示する必要があります。異なる DocTypes 1 から 15 があります。

例:

ここに画像の説明を入力

訪問 101 には docType 1 または 2 がないため、結果は 101 になるはずです。これは 1 対多の関係です。

次のクエリを試しましたが、うまくいきません。

Select v.visitID, d.visitdoc From Visits v

INNER JOIN VisitDocs d ON d.VisitID = v.VisitID

WHERE d.docType = 3 and d.docType Not IN (1,2)
4

4 に答える 4

0

上記の回答は非常に近いようで、同様の構造を複製してテストしただけです。以下の私の改訂された選択(「AS」キーワードを削除し、最後の「NOT IN」を「IN」に変更しただけで、うまくいくようです。

SELECT v.visitID
FROM Visits v
WHERE EXISTS(SELECT * 
   FROM VisitDocs d
   WHERE d.VisitID = v.VisitID
   AND d.docType = 3)
   AND NOT EXISTS(SELECT * 
                  FROM VisitDocs d
                  WHERE d.VisitID = v.VisitID
                  AND d.docType IN (1,2))
于 2013-10-22T21:27:49.090 に答える
0
SELECT visitID FROM Visits GROUP BY visitID
HAVING max(decode(docType, 3, 0)) = max(decode(docType, 1, 1, 2, 1, 0))
于 2013-10-22T21:01:09.637 に答える