Ho una query SQL che parte da una tabella in modi diversi a seconda di una condizione.Come si utilizza un'istruzione IF in una query di join MySQL?
SELECT m.id, u.first_name AS otherUser
FROM matches AS m
IF (u.id=m.user2ID)
LEFT JOIN users AS u ON u.id = m.user1ID
ELSE
LEFT JOIN users AS u ON u.id = m.user2ID
ENDIF
WHERE m.user1ID=2 OR m.user2ID=2
matches
è una tabella con le colonne integer user1ID e user2ID. users
è una tabella contenente utenti della mia applicazione web. users
ha un campo VARCHAR chiamato first_name
.
L'intenzione di questa query è di ottenere i nomi degli utenti corrispondenti con l'utente corrente.
Tuttavia, MySQL restituisce questo errore:
#1064 - You have an error in your SQL syntax;
check the manual that corresponds to your MySQL server version for
the right syntax to use near 'IF (u.id=m.user2ID) LEFT JOIN users
AS u ON u.id = m.user1ID ELSE LEFT JOIN user' at line 3
Perché?
Grazie, questa query sta generando il giusto numero di risultati, ma stranamente restituisce NULL per tutti i valori nella colonna otherUser. Sembra non rilevare i nomi dei primi utenti, come mostrato qui http://goo.gl/jg7xp –