PHP SQL: Corrispondenza corrispondenti dati tra 2 tavoli, senza filtrare fuori dati in Tabella 1 °

StackOverflow https://stackoverflow.com/questions/2875835

  •  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 "

È stato utile?

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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top