39 votes

Comment joindre une seule colonne ?

SELECT * FROM table1
LEFT JOIN table2
ON table1.id = table2.table1_id
WHERE table1.id = 1

J'ai besoin de joindre une seule colonne de la table 2, disons prénom. Comment puis-je le faire ?

83voto

NullUserException Points 42268

En supposant que vous voulez dire "sélectionner une colonne du tableau 2" :

   SELECT table1.*, table2.first_name
     FROM table1
LEFT JOIN table2
...

5voto

MTK Points 1380

La réponse acceptée est la bonne, mais j'ai rencontré une erreur étrange lorsque les tables se trouvent dans deux bases de données différentes :

En supposant que la table 1 se trouve dans la base de données 1 et la table 2 dans la base de données 2. Au départ, j'ai essayé ceci :

SELECT *, database2.table2.first_name 
FROM table1
LEFT JOIN database2.table2
ON database1.table1.id = database2.table2.table1_id
WHERE table1.id = 1

Ce qui est étrange, c'est que si j'essaie cette requête à partir de PHP PDO, il n'y a pas d'erreur mais le résultat contient toutes les colonnes de database2.table2 (je m'attendais à ce que seule la colonne first_name soit présente).

Mais si j'ai essayé la même requête depuis phpmyadmin, j'ai obtenu une erreur sintax :

La table 'database2.table1' n'existe pas.

Donc, pour résoudre ce problème, toutes les bases de données doivent être spécifiées implicitement comme ceci :

SELECT database1.table1.*, database2.table2.first_name 
FROM database1.table1
LEFT JOIN database2.table2
ON database1.table1.id = database2.table2.table1_id
WHERE database1.table1.id = 1

3voto

Reprenez votre code original et remplacez * par table1.*, table2.YourChosenColumn

 SELECT table1.*, table2.YourChosenColumn
 FROM table1 LEFT JOIN table2 
 ON table1.id = table2.table1_id 
 WHERE table1.id = 1

1voto

davecoulter Points 1322

Voulez-vous dire en plus de votre demande déjà formulée :

SELECT * FROM table1
LEFT JOIN table2
ON table1.id = table2.table1_id
WHERE table1.id = 1 and table1.first_name = table2.first_name

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X