2016-03-19 15 views
1

Ich habe eine Abfrage erstellt, die die stud_fname, stud_sname, result_studpoints, result_position und studevent_result für eine spezifische Anforderungen wo stud_gender = 'M', stud_yrGroup = '9' und event_id = '1' ausgeben sollte.MySQL- Auswählen von Daten aus verschiedenen Tabellen

Dies ist die Abfrage:

SELECT stud_fname, stud_sname, result_studpoints, result_position, studevent_result FROM students 
INNER JOIN result 
WHERE stud_gender = 'M' 
AND stud_yrgroup = '9' 
AND result.stud_id IN (SELECT students.stud_id FROM result WHERE event_id = '1'); 

aber die korrekte Ausgabe nicht angezeigt wird.

Die Zeile Sam Cro sollte nicht ausgegeben werden, da er event_id = '1' nicht tut. Wie kann ich meine Abfrage reparieren, so dass sie die richtigen Daten basierend auf den angegebenen Anforderungen ausgibt.

Vielen Dank im Voraus.

Antwort

1

In der Unterabfrage in wählen Sie die students.stud_id anstelle des Ergebnisses, das die Tabelle für Ereignis-ID 1 ist. Wenn Sie beitreten, ist es besser, die on-Klausel zu verwenden, anstatt das Kontrollkästchen hinzuzufügen Wo-Klausel. Im Allgemeinen würde ich die Abfrage wie folgt ändern.

SELECT stud_fname, 
     stud_sname, 
     result_studpoints, 
     result_position, 
     studevent_result 
FROM 
    students s 
     INNER JOIN 
    result r on 
    s.stud_is = r.stud_id 
WHERE 
    stud_gender = 'M' 
AND stud_yrgroup = '9' 
AND r.event_id = '1'; 

Sie können auch die Ergebnistabelle mit der Studenten-Tabelle in der Unterabfrage ändern, um die richtige Zuordnung zu bekommen, aber ich würde davon abraten.

+0

Vielen Dank, die Abfrage funktioniert! :) – SubZero

Verwandte Themen