Teddy_le_gnein
Messages postés36Date d'inscriptionvendredi 28 avril 2006StatutMembreDernière intervention31 janvier 2011
-
9 févr. 2009 à 16:33
Teddy_le_gnein
Messages postés36Date d'inscriptionvendredi 28 avril 2006StatutMembreDernière intervention31 janvier 2011
-
9 févr. 2009 à 17:34
Hello tous le monde.
Voilà mon problème.
J'ai une requête à faire, je suis persuadé que ça ne dois pas être si insurmontable que ça, mais voilà je nage depuis un moment!
je pense que ma solution est une jointure mais je n'en ai jamais fait!
J'ai compris le principe, mais quelque chose doit encore m'échapper.
voilà la structure:
2 tables avec un 'id' en clé primaire, et d'autres champs d'infos
Il faut savoir que des champs 'id' identiques peuvent être dans les deux tables, ou n'etre que dans la 1ere.
exemple, l'id 10 est dans la 1ere table uniquement alors que l'id 20 est dans les deux tables.
Je souhaiterai obtenir la query qui dit : " afficher champs info x de la table 2 pour toutes les id que l'on retrouve dans les deux tables."
j'ai essayer un truc dans le genre
mysql_query('SELECT id,nom,statut
FROM table1 INNER JOIN table2 ON table1.id=table2.id
WHERE id IN (SELECT id FROM table1) ORDER BY id')
or exit(mysql_error());
j'ai un message : Column 'id' in field list is ambiguous
Je veux bien comprendre qu'il ne sache pas sur quel pied danser mais mois je sais sur lequel je veux qu'il le fasse...
Pourqoi ne comprent-il pas ce que je veux? : "qu'il m'affiche les infos statut de la table 1 et les infos nom de la table 2 pour toutes les lignes correspondantes au meme id ."
Notta : la requete suivante fonctionne et me donne l'id et le statut
SELECT id,statut FROM table1 WHERE id IN (SELECT id FROM table2) ORDER BY id
mais dès que je cherche à obtenir l'info nom de la table2 je me retrouve bloqué.
J'espère etre assez clair!
une idée?
En vous remerciant!
jeremyCLIGRAPHCRM
Messages postés25Date d'inscriptionlundi 9 février 2009StatutMembreDernière intervention11 février 2009 9 févr. 2009 à 16:55
Bonjour,
Column 'id' in field list is ambiguous :
En fait vu que tu as un champ "id" dans tes deux tables mysql ne sait pas quel identifiant afficher.
Il faut que tu lui précise en préfixant le champ par le nom de la table comme ceci :
table.champ
Pour toi ce seradonc table1.id
_______________________
Jérémy, Membre du projet open source Cligraphcrm.
jeremyCLIGRAPHCRM
Messages postés25Date d'inscriptionlundi 9 février 2009StatutMembreDernière intervention11 février 2009 9 févr. 2009 à 17:03
Ps : Pour ta requête elle peut être plus simple :
SELECT table1.id,nom,statut
FROM table1,table2
WHEREtable1.id=table2.id ORDER BY table1.id
Le texte en gras est la jointure entre tes deux tables.
Avec ce type de jointure seuls les enregistrements qui auront l'identifiant dans les deux tables seront retournés.
Teddy_le_gnein
Messages postés36Date d'inscriptionvendredi 28 avril 2006StatutMembreDernière intervention31 janvier 2011 9 févr. 2009 à 17:34
Merci beaucoup...
J'était en train d'essayer la deuxième méthode que tu m'as écrit (la simple)
J'avais finir par trouver ça sur le net, mais j'avais une erreur à cause du order...
Je n'avais pas mis la table.id, mais juste id...
donc merci beaucoup à toi et à ta réactivité.
je vais pouvoir avancer...