2015-12-01 7 views
5

Ich habe eine SQL-Abfrage, die Programm, Klasse und Jahr aus meiner Students Table greifen soll, gegeben zwei Spalten X und Y der Zahlen. Wenn zum Beispiel x = 3 und Y = 4, bedeutet dies, dass es eine Verbindung zwischen Schüler 3 und 4 gibt und ich wähle Programm, Klasse, Jahr von Schüler 4, um unseres Arguments willen.Ich kann Zeilen nicht einzeln ohne Gruppierung auswählen

Das Problem ist, wenn es zwei Zeilen, in denen X und Y gleich ist, zum Beispiel: Reihe 1: X = 3, Y = 4 Row 2: X = 3, Y = 4

(Weil es vielleicht zwei Verbindungen gibt), wählt SELECT nur Programm, Klasse und Jahr nur EINMAL, nicht zweimal. Ich möchte, dass diese Wiederholung einzeln ausgewählt wird, sodass meine Schleife später zweimal wiederholt wird.

Ich hoffe ich habe mich klar gemacht!

$SQL = " 
    SELECT Programme, Class, Year 
    FROM Students 
    WHERE Student_ID in (
    SELECT X 
    FROM SearchStudent 
    WHERE Y= '$id' 
)"; 
+0

Versuchen Sie ein JOIN statt, es wird wahrscheinlich auch in den meisten Fällen schneller. – Uueerdo

+0

mm ok, wie würde ich es strukturieren? – Nockingam

+0

hat ein Beispiel als Antwort gepostet – Uueerdo

Antwort

1

Das werde ich Mitglied in Kommentar erwähnt wird wahrscheinlich so etwas wie folgt aussehen:

SELECT s.Programme, s.Class, s.Year 
FROM SearchStudent AS ss 
INNER JOIN Students AS s ON ss.X = s.Student_ID 
WHERE ss.Y= '$id' 
; 

Und vergessen Sie nicht Ihre Eingaben (d stellen Sie sicher, $ id keine ' in ihm hat) zu sanieren; oder besser, schauen Sie in parametrisierte Abfragen

Verwandte Themen