Ich habe Probleme, herauszufinden, wie mehrere Datensätze mit mehreren Werten ausgewählt werden. Lass mich versuchen, es zu durchbrechen.Wählen Sie mehrere verschiedene Werte aus der Tabelle aus und bewerten Sie sie für eine Übereinstimmung in der Tabelle
Ich habe zwei Tabellen.
Tabelle 1: Krankheiten
Tabelle 2: Symptome
Was ich tun möchte, ist, wenn der Benutzer ein Symptom tritt, wird es die Krankheiten Tabelle durch und finden Sie das passende Symptom, das damit verbunden ist, und dann wird es die Krankheit zurückgeben, die das Symptom gegeben hat.
Dies ist die SQL-Abfrage Ich habe bisher:
select a.diseases_id, a.disease_name
from diseases a, symtoms b
where a.diseases_id = b.diseases_id
and b.symtom_description like '%Cough%' AND b.symtom_description like '%Sore throat%';
Das Problem ist jetzt, was diese SQL-Abfrage nichts zurückgibt, aber wenn ich entfernen die AND-Anweisung es gibt alle Krankheiten, die „Husten“ enthalten in ihre Symptome, aber das ist nicht was ich will. Ich sollte in der Lage sein, eine Reihe von Symptomen auszuwählen, und wenn eine Krankheit alle Symptome aufweist und sie übereinstimmen, wird sie die Krankheit zurückgeben. Für die Abfrage, die ich gepostet habe, sollte es "Gastroesophageal Reflux" zurückgeben, da die Krankheiten, die nur Husten und Halsschmerzen enthält.
Kann mir jemand Hinweise geben, wie das funktioniert?
Danke!
Sie sind ein Live-Sparer! Klappt wunderbar. Stört es Sie, nach der Gruppe zu erklären und wie das funktioniert hat? Und wie funktioniert die Zählung? Was ist der Zweck der = 2? –
HAVING ist wie eine WHERE-Klausel für die Aggregation, also wird sie ** nach der Aggregation (WHERE vorher) angewendet. Ich habe die zusätzliche Spalte _b.symtom_description_ verwendet, um sicherzustellen, dass die Aggregation mir für jedes Symptom eine Zeile gibt. Mit _count (a.diseases_id) = 2_ Ich fordere, dass _a.diseases_id_ muss 2 mal existieren, wie Sie 2 Symptome in Ihrer WHERE-Klausel angegeben. Wenn Sie 3 oder etwas anderes als 2 haben, müssen Sie diese Einschränkung natürlich anpassen. – faulix90