0

4 つのテーブルを結合する単純なクエリがあります。正常に動作しており、そのクエリにもう 1 つ結合を追加する必要がありますが、今回は、そのクエリ内の 1 つのパラメーターに応じてテーブルが異なります。

私のクエリは次のようになります。

SELECT pat.Id,dgroup.Diagnosis as 'Description', ntest.Testname as 'TestName',
       dgroup.Id as 'ProrityId', subt.TestSubType, **ntest.SubGroupId**
  from pat.tbl_PatientTestRecord pat
          JOIN tbl_Test_DiagnosisGroup InTest on pat.IndividualTestId=InTest.Id
          JOIN tbl_NrlTests nTest ON InTest.TestId=nTest.id
          JOIN tbl_DiagnosisGroup dgroup ON Intest.DGId=dgroup.id
          Left Join 
             **tbl_vary**
  • tbl_varyはntest.subgroupIDに依存します。に表示されるテーブルはおそらく 3 つtbl_varyです。

私のSQLは少し弱いので、これに対する適切な解決策に非常に感謝しています.

4

1 に答える 1

1

1 つの可能性は、UNION サブクエリです。

SELECT pat.Id,dgroup.Diagnosis as 'Description', ntest.Testname as 'TestName',
       dgroup.Id as 'ProrityId', subt.TestSubType, **ntest.SubGroupId**
  FROM pat.tbl_PatientTestRecord pat
  JOIN tbl_Test_DiagnosisGroup InTest on pat.IndividualTestId=InTest.Id
  JOIN tbl_NrlTests nTest ON InTest.TestId=nTest.id
  JOIN tbl_DiagnosisGroup dgroup ON Intest.DGId=dgroup.id
  LEFT JOIN
       (SELECT v1.SubGroupId, v1.Relevant_Col_1 AS rc1, v1.Relevant_Col_2 AS rc2
          FROM table_variant_1 AS v1
         WHERE v1.SubGroupId = ntest.SubGroupID
        UNION
        SELECT v2.SubGroupId, v2.Alternative_1 AS rc1, v2.Alternative_2 AS rc2
          FROM table_variant_2 AS v2
         WHERE v2.SubGroupId = ntest.SubGroupID
        UNION
        SELECT v3.SubGroupId, v3.Other_Source_1 AS rc1, v3.Other_Source_2 AS rc2
          FROM table_variant_3 AS v3
         WHERE v3.SubGroupId = ntest.SubGroupID
       ) AS u
    ON u.SubGroupId = ntest.SubGroupId

サブクエリで WHERE 句を使用しない方がよい場合もあれば、UNION クエリで結合を指定する他の方法がある場合もあります...サブクエリがどのようにすべきかについて、それほど多くの手がかりを提供していません。構築されます。

于 2013-06-16T05:35:35.890 に答える