再度改訂:
SELECT x.Imaging, x.Indication FROM medicalimaging x
WHERE MCGID = '1036'
and x.Indication not in (
select Indication FROM invoicefields a join invoices b on a.InvoiceNumber = b.InvoiceNumber WHERE a.PatientID = '10120003' and x.MCGID = b.StudyID and x.Imaging = a.TypeOfExam
)
Order By Imaging ASC, Indication ASC
回答ありがとうございました。調査を行いました。これが私が思いついたものです。
SELECT x.Imaging, x.Indication
FROM medicalimaging x
WHERE MCGID = 'McG 1032'
AND x.Indication NOT
IN (
SELECT Indication
FROM invoicefields a
JOIN invoices b ON a.InvoiceNumber = b.InvoiceNumber
WHERE a.PatientID = '10120003'
AND x.MCGID = b.StudyID
)
すでに請求されているものを把握し、リストから除外しようとしています。これらは私のテーブル、いくつかのサンプルデータ、およびクエリ結果です。
Medical Imaging ( These are the fields to be used in the list)
id | MCGID | Imaging | Indication
1 1032 Xray Visit 1
2 1032 Xray Visit 2
3 1032 Xray Visit 3
4 1032 CT Emergency
5 1045 Xray Initial
invoice ( Generic Invoice Data)
InvoiceNumber | StudyID | TypeInvoice | void |
1 1032 Medical Imaging 0
2 1045 Medical Imaging 0
3 1032 Medical Imaging 1
4 1032 Medical Imaging 0
Invoicefields ( The Rows of charges in the Invoice )
InvoiceNumber | PatientID | TypeofExam | Indication
1 PT25 Xray Visit 1
1 PT30 Xray Visit 1
2 PT36 Xray Initial
2 PT25 Xray Initial
4 PT25 Xray Visit 2
4 PT30 Xray Visit 2
4 PT25 Xray Visit 3
After Query Results
Ex. 1 Provided MCGID=1032 and PatientID=PT25.
Results: CT , Emergency
Ex. 2 Provided MCGID=1032 and PatientID=PT30.
Results: Xray , Visit 3
CT , Emergency
つまり、これは一般的な構造です。参考までに、MCGIDはStudyIDと同じであり、検査の種類はイメージングと同じです。もう1つの注意点は、MCGIDは一意であり、PatientIDはMCGIDにのみ一意であるということです。これは、PatientIDを別のMCGIDに再利用できることを意味します。クエリを実行するために、PatientIDとMCGIDを提供します。したがって、私の目標は、TypeofExamおよびIndicationの下の請求書フィールドにリストされていない潜在的なImagingおよびIndicationsのリストを作成することです。また、void = 1の場合、請求書番号も無視する必要があります。
編集 :
基本的なSQL関数を理解し、複数のテーブルからデータをプルする方法を理解しました。複数のテーブルからデータを相互参照する方法を理解していません。問題は、データを約3回相互参照する必要があることです。だから、これが私が今いるところです。
SELECT medicalimaging.Imaging,medicalimaging.Indication FROM medicalimaging WHERE MCGID='1032'
他のテーブルからデータを取得し、プルしようとしているデータと比較するように指示する方法がわかりません。