requetes avec jointures conditionnelles
Bonjour, dans une jointure, je souhaite obtenir le pseudo d'un membre.
Lorsque ce membre est toujours inscrit le pseudo doit être cherché dans la table "membres", lorsque le membre s'est désinscrit, le pseudo doit être cherché dans la table "old_membres".
La requête ci-dessous fonctionne mais le pseudo est toujours recherché dans les 2 tables (membres et old_membres) même s'il est trouvé dans la première table (membres).
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| SELECT
r.id AS id_rencontres,
r.participant1 AS participant1,
r.participant2 AS participant2,
COALESCE(m1.pseudo, o_m1.pseudo) AS pseudo1,
COALESCE(m2.pseudo, o_m2.pseudo) AS pseudo2
FROM rencontres AS r
LEFT JOIN membres AS m1 ON r.participant1=m1.id
LEFT JOIN old_membres AS o_m1 ON r.participant1=o_m1.id
LEFT JOIN membres AS m2 ON r.participant2=m2.id
LEFT JOIN old_membres AS o_m2 ON r.participant2=o_m2.id
WHERE
r.id = '11'
LIMIT 1 |
Précisions:
La table "old_membres" me sert à conserver uniquement le pseudo (identifiant) des membres désinscrits. Ainsi je peux:
- Conserver un index unique sur le champ "pseudo" de la table "membres" car le pseudo permet de se loguer.
- Libérer le pseudo d'un ancien membre désinscrit pour qu'il puisse être disponible pour un nouveau membre
- Afficher le pseudo des participants des rencontres même si le participant s'est désinscrit.
Auriez-vous une solution ?