Choisir les champs dans une requête JOIN ?

Eléphant du PHP | 92 Messages

22 févr. 2010, 15:46

Bonjour,
Si je fais une requête du genre SELECT * FROM table1 LEFT JOIN table2 ON table1.id=table2.id, ça marche sans problème. Mais commant faire pour choisir les champs à manipuler ?

Par exemple, j'ai dans ma table1 les champs "id", "nom", "description" (clé sur id) et dans la table2 "id2", "id", "photo", "commentaire" (clé sur id2, id correspondant à la clé de la table1 pour la jointure). Je voudrais sélectionner "id" et "nom" dans la table1, "id2", "id" et "photo" dans la table2 tout en faisant une jointure dessus.

Si je fais une requête du genre SELECT id,nom FROM table1 LEFT JOIN table2 ON table1.id=table2.id, je n'obtiens rien. Apparemment la requête SELECT demande les champs indiqués aux deux tables (j'aurais pensé qu'elle prendrait tous les champs de la table2, au pire). Où/comment indiquer la liste des champs à prendre en compte pour la table sur laquelle on fait la jointure ?

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

22 févr. 2010, 16:13

Mais commant faire pour choisir les champs à manipuler ?
De la même façon que tu les spécifies dans ta jointure.

Quel SGBD utilises-tu ? C'est une information demandée pour poster dans ce forum. Si tu n'obtiens rien c'est parceque tu demandes "id", qui est une colonne présente dans les deux tables. Tu devrais obtenir une erreur, comment est-ce que tu testes tes requêtes ?

ViPHP
ViPHP | 5462 Messages

22 févr. 2010, 16:14

ta essayer avec des alias ? (a peu prêt)
SELECT tb1.id, tb2.nom FROM table1 tb1 LEFT JOIN table2 tb2 ON tb1.id=tb2.id

Eléphant du PHP | 92 Messages

22 févr. 2010, 16:30

Quel SGBD utilises-tu ? C'est une information demandée pour poster dans ce forum. Si tu n'obtiens rien c'est parceque tu demandes "id", qui est une colonne présente dans les deux tables. Tu devrais obtenir une erreur, comment est-ce que tu testes tes requêtes ?
MySQL. Je teste les requêtes avec PHPMyAdmin.

Et en fait, ça a l'air de marcher en précisant les tables et les champs (SELECT table1.id,table1.nom,table2.id2,table2.id,table2.photo FROM table1 LEFT JOIN table2 ON table1.id=table2.id par exemple). Je l'avais fait avant de poster mais je n'obtenais rien. J'ai dû faire une erreur de syntaxe à ce moment-là. :oops: