2016-09-03 1 views
0

ImはInsomniaとインフルエンザの両方を持つ人を見つけようとしています。複数の病気を持つ人を取得する方法

私がこれまで試したコードは次のとおりです。

SELECT Patient.patientName, Patient.patientPNbr 
FROM Patient 
LEFT JOIN SuffersFrom 
ON Patient.patientPNbr = SuffersFrom.patientPNbr 
WHERE diseaseName = 'Insomnia' 
AND diseaseName = 'Influenza' 

はどのようにして人を見つけるために進むのでしょうか?

+0

は「でグループ」をチェックして、「を有する」...参加すると、以下のクエリを使用していた患者を返したい場合は、これを試してみてくださいキーワード... – MrTux

+0

どのデータベースをお使いですか? 。あなたのSQLがうまく見えるので – Abhishek

+2

待っている部屋に入って、くしゃみをしている疲れた人を探す –

答えて

3

両方の疾患

SELECT Patient.patientName, Patient.patientPNbr 
FROM Patient 
INNER JOIN SuffersFrom ON Patient.patientPNbr = SuffersFrom.patientPNbr 
WHERE diseaseName IN ('Insomnia','Influenza') 
GROUP BY Patient.patientName, Patient.patientPNbr 
HAVING COUNT(diseaseName)>1 
+0

潜在的な問題これは、SuffersFromテーブルにInsomnia(またはInfluenzaの2つ)のエントリが2つある場合、結果も返されるということです。 – GavinCattell

+0

それから、 'HAVING COUNT(DISTINCT diseaseName)> 1'としてCOUNTにDISTINCTを使用できます。 – Susang

0

SuffersFromを複数回使用する必要があります(検査する疾患ごとに1回)。私はEXISTS句を使用します。

SELECT SELECT Patient.patientName, Patient.patientPNbr 
FROM Patient 
--Check for Insomnia 
WHERE EXISTS (SELECT 1 
    FROM SuffersFrom 
    WHERE Patient.patientPNbr = SuffersFrom.patientPNbr 
    AND diseaseName = 'Insomnia') 
--Check for Influenza 
AND EXISTS (SELECT 1 
    FROM SuffersFrom 
    WHERE Patient.patientPNbr = SuffersFrom.patientPNbr 
    AND diseaseName = 'Influenza') 
0

 SELECT P.patientName, P.patientPNbr 
     FROM Patient p 
      INNER JOIN SuffersFrom s 
        ON p.patientPNbr = s.patientPNbr 
      INNER JOIN SuffersFrom s1 
        ON s.patientPNbr = s1.patientPNbr 
     WHERE s.diseaseName = 'Insomnia' 
       AND s1.diseaseName = 'Influenza' 
関連する問題