PHP SQL: concordance des données correspondant entre 2 tables, sans filtrage des données dans le 1er tableau

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

  •  03-10-2019
  •  | 
  •  

Question

J'ai 2 tables. Pour l'amour de simplicités « u » a les colonnes suivantes
userid
divisionid

'd' a ce qui suit:
divisionid
nom

Je n'ai pas créé cette table, sinon je ne serais pas ce problème. u.DIVISION peut NULL. d.DIVISION ne peut pas .

L'exécution suit crée les données appropriées, mais il filtre également chaque code d'utilisateur qui a NULL pour elle est divisionid. Y at-il de toute façon de montrer encore tous les userid est quel que soit leur divisionid et si le divisionid est non nul, avant d'afficher le nom de la division?

"SELECT userid, d.NAME
DE u, d
OÙ u.divisionid = d.divisionid
ORDER BY UserID "

Était-ce utile?

La solution

Utilisez une jointure externe:

SELECT userid, d.NAME
FROM u
LEFT OUTER JOIN division d
ON u.divisionid = d.divisionid
ORDER BY userid

Autres conseils

Utilisation de l'Oracle ou implicite se joindre à la syntaxe implique une INNER JOIN. Une jointure interne élimine les enregistrements qui ne répondent pas aux critères.

Une jointure explicite en utilisant la clause JOIN vous permet de spécifier le type de jointure.

A LEFT OUTER JOIN conserve toutes les lignes de la première table, peu importe s'il y a des lignes correspondantes dans la seconde table.

SELECT userid, d.NAME
FROM u
LEFT OUTER JOIN division d
ON d.divisionid = u.divisionid
ORDER BY userid
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top