sql >> データベース >  >> RDS >> Sqlserver

6つのテーブルを結合するSQL

    appointmnent_id以降 Appointment の主キーです 、このテーブルには 1:N があります 6 つのテーブルすべてとの関係。

    これは、これら 6 つのテーブルに結合すると、重複データを含む複数の行が生成される場合です。 、それは Cartesian Product のようなものです .たとえば、(1 つの id=46 のみの場合) )、以下があります:

    • PatientInvestigation の 3 行
    • PatientTreatmentMedicine の 6 行
    • PatientFindings の 4 行
    • PatientDiagnosis の 2 行
    • PatientCC の 2 行
    • PatientAdvice の 5 行

    3x6x4x2x2x5 =1440 が得られます 結果セットの行、必要なのは 3+6+4+2+2+5 (+1) =23 だけです 行。これは、必要な行数の 60 倍 (さらに列数が多い) です。

    6 つの個別のクエリを実行し、各クエリで (6 つのうちの) 1 つのテーブルに 1 つの JOIN を使用することをお勧めします。 (ベース テーブル Appointment からデータを取得するためのもう 1 つのクエリ )。 アプリケーション コードで 6 つのクエリの結果を組み合わせる .基本クエリと最初のテーブルに結合するクエリの例:

    ベース テーブル :

    SELECT 
        a.appointment_id, 
        a.patient_id
    FROM 
        Appointment AS a
    WHERE
        a.appointment_id = 46
    

    PatientInvestigation に参加してください :

    SELECT 
        pi.investigation_name, 
        pi.investigation_id
    FROM 
        Appointment AS a
          JOIN
        PatientInvestigation AS pi
            ON pi.appointment_id = a.appointment_id
    WHERE
        a.appointment_id = 46
    


    1. オフライン国際化アプリを作成する方法:Sqliteデータベースを使用する

    2. すべての 0 値を NULL に設定します

    3. DRBDを使用したPostgreSQLのボリュームレベルレプリケーションの概要

    4. PHP:レコードが存在する場合はHTMLを表示し、存在しない場合は何も表示しません