2015-12-01 7 views
5

Ho una query SQL che dovrebbe estrarre il programma, la classe e l'anno dalla mia tabella studenti, in base a due colonne X e Y di numeri. Se x = 3 e Y = 4, ad esempio, significa che c'è una connessione tra gli studenti 3 e 4 e selezionerò programma, classe, anno dallo studente 4, per il gusto del nostro argomento.Impossibile selezionare le righe singolarmente senza il raggruppamento

Il problema è, se ci sono due righe in cui X e Y sono uguali, ad esempio: Riga 1: X = 3, Y = 4 Row 2: X = 3, Y = 4

(perché forse ci sono due connessioni), SELECT seleziona solo programma, classe e anno solo una volta, non due volte. Voglio che selezioni individualmente quella ripetizione, quindi il mio ciclo più tardi verrà ripetuto due volte.

Spero di essere stato chiaro!

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

Prova un JOIN invece, probabilmente sarà più veloce anche nella maggior parte dei casi. – Uueerdo

+0

mm ok, come lo strutturerei? – Nockingam

+0

ha pubblicato un esempio come risposta – Uueerdo

risposta

1

Il join ho detto nel commento sarà probabilmente simile a questa:

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' 
; 

E non dimenticare di disinfettare gli ingressi (vale a dire fare in modo $ id non ha ' in esso); o meglio, guarda in query parametrizzate

Problemi correlati