2010-05-20 17 views
0

J'ai 2 tables. Pour l'amour de simplicités 'u' a les colonnes suivantes
userid
divisionid
PHP SQL: Correspondant les données correspondantes entre 2 tables, sans filtrer les données dans la 1ère table

'd' a les suivantes:
divisionid
Nom

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

L'exécution de ce qui suit crée les données appropriées, mais elle filtre également chaque ID utilisateur ayant la valeur NULL pour son divisionid. Y at-il de toute façon toujours montrer tous les userid indépendamment de leur divisionid et si le divisionid n'est pas nul, afficher alors le nom de la division?

"SELECT ID utilisateur, d.NAME
à partir de u, d
OÙ u.divisionid = d.divisionid
ORDER BY UserID"

Répondre

1

Utiliser une jointure externe:

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

L'utilisation de la syntaxe de jointure Oracle ou implicite implique un INNER JOIN. Une jointure interne élimine les enregistrements qui ne répondent pas aux critères. Une jointure explicite à l'aide de la clause JOIN vous permet de spécifier le type de jointure.

Un LEFT OUTER JOIN conserve toutes les lignes de la première table, même s'il existe 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