PHP SQL: Corrispondenza corrispondenti dati tra 2 tavoli, senza filtrare fuori dati in Tabella 1 °
-
03-10-2019 - |
Domanda
Ho 2 tabelle. Per semplicità amor 'u' ha le seguenti colonne
userid
divisionid
'd' ha la seguente:
divisionid
nome
non ho creato questo tavolo, altrimenti non avrei questo problema. u.DIVISION può essere NULL. d.DIVISION non possono .
L'esecuzione del seguente crea i file appropriati, ma filtra anche fuori ogni singolo ID utente che ha NULL per la sua divisionid. Esiste un modo per mostrare ancora tutto l'ID utente è a prescindere dalla loro divisionid e se il divisionid non è nullo, per poi visualizzare il nome della divisione?
"SELEZIONE userid, d.NAME
DA u, d
DOVE u.divisionid = d.divisionid
ORDER BY UserID "
Soluzione
Usa un outer join:
SELECT userid, d.NAME
FROM u
LEFT OUTER JOIN division d
ON u.divisionid = d.divisionid
ORDER BY userid
Altri suggerimenti
Uso della Oracle o implicita uniscono la sintassi implica un INNER JOIN
. Un inner join Elimina i record che non soddisfano i criteri.
Un esplicito aderire usando la clausola JOIN
consente di specificare il tipo di unione.
A LEFT OUTER JOIN
mantiene tutte le righe nella prima tabella, a prescindere se ci sono righe corrispondenti nella seconda tabella.
SELECT userid, d.NAME
FROM u
LEFT OUTER JOIN division d
ON d.divisionid = u.divisionid
ORDER BY userid