2016-04-29 8 views
2

ich eine SQL-Abfrage wieSQL-Abfrage dauert viel Zeit zu reagieren

SELECT c.Case_Id, c.Disease_Sub_Type_Id, p.MedRecNo 
FROM case1 c, patient p, episode e, personal_medical_history pmh, reproductive_history rh 
WHERE c.Age <> '12' AND c.horizontal_spread <> '21' AND c.Patient_Id = p.Patient_Id 
     AND e.Case_Id = c.Case_Id AND pmh.Patient_Id = p.Patient_Id 
     AND rh.Patient_Id = p.Patient_Id 
GROUP BY c.Case_Id` 

haben, wenn ich oben Abfrage verwenden diese mich schnell gibt führen, aber wenn ich oder als Bedingung wie

SELECT c.Case_Id, c.Disease_Sub_Type_Id, p.MedRecNo 
FROM case1 c, patient p, episode e, personal_medical_history pmh, reproductive_history rh 
WHERE c.Age <> '12' OR c.horizontal_spread <> '21' AND c.Patient_Id = p.Patient_Id AND e.Case_Id = c.Case_Id AND pmh.Patient_Id = p.Patient_Id 
     AND rh.Patient_Id = p.Patient_Id 
GROUP BY c.Case_Id` 

I bekomme keine Ausgabe und MySQL wird hängen. Gibt es eine einfache Möglichkeit, sich anzumelden, oder mein Ansatz ist falsch?

Antwort

0

Versuchen Sie, Ihr OR in Klammern wie folgt zu verpacken;

SELECT c.Case_Id 
    ,c.Disease_Sub_Type_Id 
    ,p.MedRecNo 
FROM case1 c 
    ,patient p 
    ,episode e 
    ,personal_medical_history pmh 
    ,reproductive_history rh 
WHERE (c.Age <> '12' 
    OR c.horizontal_spread <> '21') 
    AND c.Patient_Id = p.Patient_Id 
    AND e.Case_Id = c.Case_Id 
    AND pmh.Patient_Id = p.Patient_Id 
    AND rh.Patient_Id = p.Patient_Id 
GROUP BY c.Case_Id` 
+0

Danke soviel es funktioniert ... –

+0

Sicher, ist es am besten Praxis sonst die OR-Anweisungen in Klammern wickeln sie alles vor und nach als separate Anweisungen verarbeitet. Wenn dies das Problem gelöst hat, dann markieren Sie bitte als akzeptierte Antwort und Upvote. –