j'ai une DB qui comprend ces 3 tables : utilisateur, client, est_gere. est_gere contient les associations d'identifiants des deux autres tables. Je cherche à récupérer les clients qui sont gérés exactement par un utilisateur dont je connait l'id. J'ai essayé cette requête qui ne fonctionne pas :
SELECT c.idClient, nomClient FROM client c left join est_gere e on c.idClient = e.idClient left join utilisateur u on u.idUtil = e.idUtil where not e.idUtil <> 1 and e.idUtil = 1
Le souci c'est que ça me renvoie aussi les clients qui sont gérés par plusieurs utilisateurs, et je ne vois pas comment faire pour avoir que ceux qui sont gérés uniquement par l'utilisateur 1. J'ai pensé à utiliser un count(), mais je ne vois pas du tout où le mettre.
Si vous pouviez m'éclairer, ce serait avec plaisir. Merci.
J'ai pensé que le "not e.idUtil <> 1" m'aurait exclu les clients qui auraient des utilisateurs autres que le 1, mais en effet ça ne marche pas car c'est juste la condition inverse à "e.idUtil = 1", et c'est bien là mon problème.
Concernant le left, c'est une question de préférence.
Une question de préférence ?? Tu perds surtout en performance (et en plus ça rime !)
SELECT c.idClient, nomClient
FROM client c
INNER JOIN est_gere e ON c.idClient = e.idClient
INNER JOIN utilisateur u ON on u.idUtil = e.idUtil
WHERE e.idUtil = 1
AND NOT EXISTS (
SELECT *
FROM est_gere e_
INNER JOIN utilisateur u_
WHERE c.idClient = e_.idClient AND e_.idUtil <> 1
)
Fait à l'arrache, donc je promets pas que ça marche du premier coup...
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Tutoriel complet MySQL !
Tutoriel complet MySQL !