-
SQL probleme de jointure
Salut je resume
voulant afficher une table contenant des traitements :
- date, nature, action, writeuser, edituser
- writeuser est l'utilisateur qui a saisi le traitement
- edituser est l'utilisateur qui a modifié le traitement recement
writeuser et edituser sont des entiers qui pointent vers l'index de la table "UTILISATEURS" qui contient elle :
index, name, password
Je voudrais faire une jointure afin d'afficher la table TRAITEMENTS avec les noms des utilisateurs (les 2 celui de la saisie et celui de l'edition)
SELECT "TRAITEMENTS".*, "UTILISATEURS".NAME FROM "TRAITEMENTS"
JOIN "UTILISATEURS"
ON "TRAITEMENTS".writeuser="UTILISATEURS".index
mais la je ne vois apparaitre dans mon tableau qu'un seul champ NOM d'UTILISATEURS, je sais que j'y procéde mal mais je ne sais pas coment effectuer une jointure en affichant deux colonnes différentes a partir du meme champ de la table jointe, merci
PS : allez y mollo avec l'explication, je suis un NEANDERTHAL du TTABLE qui en se reveillant vient de découvrir le SQL
-
Il te faut faire 2 fois la jointure, une jointure pour chaque champ :
SELECT "TRAITEMENTS".*, TU1.NAME, TU2.NAME FROM "TRAITEMENTS"
JOIN "UTILISATEURS" TU1
ON "TRAITEMENTS".writeuser=TU1.index
JOIN "UTILISATEURS" TU2
ON "TRAITEMENTS".edituser=TU2.index
-
Merci pour la réponse j'ai édité car je viens d'essayer et ca marche
TU1 et TU2 sont des variables donc !
-
Pas des variables, non.
On appelle ça des Alias. C'est comme un surnom que l'on donne à la table pour éviter d'avoir à répéter en permanence le long nom de la table.
L'autre utilité ici est aussi de différencier les 2 appels différents à la même table. Si tu ne les mettais pas, le moteur de requetage ne saurait pas de quelle jointure il faudrait extraire les champs Name de la table Utilisateur.