Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2021 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Mysql - LEFT JOIN Multiple sur une même table

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Mysql - LEFT JOIN Multiple sur une même table

n°1660930
samyl
Posté le 20-12-2007 à 04:20:00  profilanswer
 

Bonjour à tous.
 
Je cherche à faire une requette SQL avec un "LEFT JOIN" Multiple sur une même table.
Voici mes tables :
carnet(id,nom)
table2(emeteur,receveur)
 
Les champs de la table 'table2' sont les association du champ 'id' de la table carnet
 
La requette suivante fonctionne bien :
select carnet.nom as emeteur from table2 LEFT JOIN carnet ON table2.emeteur=carnet.id
 
Mais je n'arrive pas à afficher les deux champs :

Code :
  1. SELECT carnet.nom AS emeteur, carnet.nom AS receveur
  2. FROM table2 LEFT JOIN carnet ON table2.emeteur=carnet.id AND table2.receveur=carnet.id


Cette dernière requette ne retourne pas d'erreur, mais les champs sont vide.
Je doit faire une erreur quelque part.
Est-ce que quelqu'un connaît une solution ?
Merci d'avance.


Message édité par samyl le 20-12-2007 à 15:09:56
mood
Publicité
Posté le 20-12-2007 à 04:20:00  profilanswer
 

n°1661034
anapajari
s/travail/glanding on hfr/gs;
Posté le 20-12-2007 à 10:38:03  profilanswer
 

ce sont deux informations différentes que tu cherches à remonter, il te faut donc jointer deux fois sur ta table carnet ( comme le laisse d'ailleurs entendre le titre de ton topic).
Par contre la chose à savoir dans le cas de "join multiples" sur une même table c'est de ne pas oublier d'aliaser.

Code :
  1. SELECT
  2.  emeteur.nom AS nom_emeteur,
  3.  receveur.nom AS nom_receveur
  4. FROM
  5.  table2
  6.  LEFT JOIN carnet AS emeteur ON table2.emeteur=emeteur.id
  7.  LEFT JOIN carnet AS receveur ON table2.receveur=receveur.id

n°1661284
samyl
Posté le 20-12-2007 à 15:53:57  profilanswer
 

Merci beaucoup, ça marche parfaitement.
Cette façon fût ma première idée, mais j'avais effectivement omis d'aliaser les table (je ne connaissait pas).
:jap:
 
Voici maintenant ma requette qui fonctionne :

Code :
  1. SELECT facture.date, facture.numero,  emeteur.nom AS emeteur, receveur.nom AS receveur, facture.ttc
  2. FROM facture
  3.  LEFT JOIN carnet AS emeteur ON facture.emeteur=emeteur.id
  4.  LEFT JOIN carnet AS receveur ON facture.receveur=receveur.id
  5. WHERE facture.date >='2007-06-01'
  6.  AND facture.date <'2007-07-01'
  7. ORDER BY date,emeteur
  8. LIMIT 0,100


 
J'obtient ainsi une liste des 100 1ères factures du mois de Juin avec 4 colonnes :
 Date , Emeteur , Receveur (destinataire) , Montant TTC
 
Merci Anapajari ! J'aurais mis du temps à comprendre seul.

n°1661287
MagicBuzz
Posté le 20-12-2007 à 15:55:49  profilanswer
 

between c'est mieu que des > et < (attention cependant, between c'est inclusif)


Message édité par MagicBuzz le 20-12-2007 à 15:56:06

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Mysql - LEFT JOIN Multiple sur une même table

 

Sujets relatifs
requete mysql spéciale pour créer un chatProblème encodage mySQL : � et ?
PHP et MySQL[resolu]Boucles sur des requetes MySQL
Page dynamique ne s'affiche pas php/mysql/easyphpGTK & table
PHP MYSQL Affichage resultats selon heure et heure de nuitCopie valeurs d'une table
oracle : create table avec plusieurs références facultatives[Résolu] Bloqué à 99 données lues sur base mysql
Plus de sujets relatifs à : Mysql - LEFT JOIN Multiple sur une même table


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR