[réglé] [SQL] Jointure et variable du meme nom

Jointure et variable du meme nom [réglé] [SQL] - SQL/NoSQL - Programmation

Marsh Posté le 07-01-2015 à 12:15:10    

Bonjour,
 
J'ai un petit soucis je n'arrive pas a afficher mes résultats car certains noms de champs sont identiques.
 
J'ai 3 tables :
- Une table Membre :
id | prenom | id_yeux_couleur | id_cheveux_couleur
exemple : 1 | bertrand | 2 | 4
- Une table yeux_couleur :
id | couleur
exemple : 2 | bleus
- Une table cheveux_couleur :
id | couleur
exemple : 4 | roux
 
Je souhaite donc afficher Bertrand, roux aux yeux bleus

Citation :

$sql = "SELECT * FROM membre a  
JOIN cheveux_couleur b  ON a.id_cheveux_couleur = b.id  
JOIN yeux_couleur c  ON a.id_yeux_couleur = c.id  
WHERE a.id = '$id_membre'  ";
 
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
while($data = mysql_fetch_array($req))
{
$prenom = $data['prenom'];
$couleur = $data['couleur'];
echo "Je m'appelle $prenom, je suis $couleur aux yeux $couleur";
}
 


 
En fait je ne sais pas comment faire distinguer la variable du meme nom pour les résultats de la jointure.
 
Il faudrait, probablement, quelque chose de la sorte :

Citation :

$couleur_yeux = $data['b.couleur'];
$couleur_cheveux = $data['c.couleur'];


 
Merci d'avance pour votre aide  :hello:


Message édité par tomware le 07-01-2015 à 12:41:31
Reply

Marsh Posté le 07-01-2015 à 12:15:10   

Reply

Marsh Posté le 07-01-2015 à 12:27:42    

Faut renommer les champs dans la partie "SELECT" :
 

SELECT a.prenom prenom, b.couleur couleur_yeux, c.couleur couleur_cheveux FROM membre a  
JOIN cheveux_couleur b  ON a.id_cheveux_couleur = b.id  
JOIN yeux_couleur c  ON a.id_yeux_couleur = c.id


Et tu récupère tes champs nommés :
- prenom
- couleur_yeux
- couleur_cheveux


---------------
Doucement le matin, pas trop vite le soir.
Reply

Marsh Posté le 07-01-2015 à 12:41:15    

Bonjour MrBebert
Merci pour ton aide c'est bien ça :)
Tu as résolu mon probleme :jap:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed