PHP SQL: concordance des données correspondant entre 2 tables, sans filtrage des données dans le 1er tableau
-
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 "
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