Bonjour,
J’ai un petit pb avec une requête… qui fonctionne presque !
Le but :
je cherche à avoir une liste d’assistantes avec le nom de leur responsable dans la même requête. L’assistante et le responsable ont la même entité (délégation).
Les tables :
- users (user_id ; user_nom ; user_prenom) : elle contient tous les utilisateurs (donc les assistantes + les responsables)
- entités (ent_id ; label) : elle contient toutes les entités (délégations)
- rel_users_entites (user_id ; ent_id ; flag_responsable ; flag_assistant) : elle fait la relation entre les 2 tables précédentes et indique si le user est responsable ou non, assistante ou non d’une entité donnée.
Le contexte :
je ne peux utiliser que MySQL 4.0.23 ce qui m’empêche de faire des requêtes imbriquées.
La requête :
J’obtiens quasiment ce que je désire… le seul problème est que je n’ai pas toutes les assistantes car celles qui n’ont pas encore de « responsable » pour une entité donnée, n’apparaissent pas. En effet, mon « where rue.ent_id = r.ent_id » me sélectionne que les lignes correspondantes, à droite et à gauche... et je n’arrive pas à inclure cette ligne dans un des JOIN précédents (ou un nouveau) sans lever une erreur ou avoir un résultat ne correspondant pas à ce que je désire…
SELECT u.user_nom as 'NOM ASSISTANTE',
u.user_prenom as 'PRENOM ASSISTANTE',
u.user_email as 'MAIL ASSISTANTE',
r.etage as ETAGE,
u.telephone as TELEPHONE,
us.user_nom as 'NOM DU RESPONSABLE',
us.user_prenom as 'PRENOM DU RESPONSABLE'
FROM entites e,
sites s,
rel_users_entites AS r
LEFT OUTER JOIN users AS u
ON (r.user_id = u.user_id
AND r.flag_assistant = 'O'),
rel_users_entites AS rue
LEFT OUTER JOIN users AS us
ON (rue.user_id = us.user_id
AND rue.flag_responsable = 'O')
WHERE rue.ent_id = r.ent_id
AND r.ent_id = e.ent_id
AND e.site_id = s.site_id
GROUP BY
u.user_nom, us.user_nom
Si vous avez le temps et réussi à comprendre mon problème, merci d’avance de votre aide !
Partager