Un utilisateur a (0,1) groupe
Un groupe peut etre utilisé par (0,n) groupe
Je voudrai faire une requete qui me récupère la liste de mes utilisateurs avec le lib du groupe auquel il appartient et si l'utilisateur n'a pas de groupe mettre une chaine vide.
En général je ferai ceci :
SELECT U.login, G.lib
FROM Utilisateur U, Groupe G
WHERE U.Id_Groupe = G.Id_Groupe
UNION (
SELECT U.login, ""
FROM Utilisateur U
WHERE U.Id_Utilisateur NOT IN (
SELECT U.Id_Utilisateur
FROM Utilisateur U, Groupe G
WHERE U.Id_Groupe = G.Id_Groupe
)
)
ORDER BY Login
malheureusement ça ne marche pas, et je me dis qu'il doit peut etre exister quelque chose de plus propre
ranouf
Messages postés237Date d'inscriptionmercredi 18 décembre 2002StatutMembreDernière intervention31 août 2009 1 janv. 2006 à 18:33
En faisant quelques recherches j'ai réussi à faire ceci qui fonctionne :
(
SELECT U.login AS utilisateur, G.lib
FROM Utilisateur U, Groupe G
WHERE U.Id_Groupe = G.Id_Groupe
)
UNION
(
SELECT U.login, NULL
FROM Utilisateur U
WHERE U.Id_Utilisateur
NOT IN (
SELECT U.Id_Utilisateur
FROM Utilisateur U, Groupe G
WHERE U.Id_Groupe = G.Id_Groupe
)
)
ORDER BY utilisateur
Mais est ce qu'il n'existerai pas un moyen plus optimisé ?
NOT IN (
SELECT U.Id_Utilisateur
FROM Utilisateur U, Groupe G
WHERE U.Id_Groupe = G.Id_Groupe
)
Cette partie me semble de trop, sous oracle il y a moyen d'éviter cette partie si je me souviens bien.