2010-01-22 6 views
0

Je suis coincé avec des tables dans mysql. Je ne sais pas vraiment comment rejoindre l'info à partir de trois tables. Très reconnaissant si quelqu'un pouvait m'aider. Merci.mysql comparer les tables


C'est ce que j'ai:

Table1.Users

+----+--------+--------------+ 
| id | name | lastname  | 
+----+--------+--------------+ 
| 1 | Peter | Elk   | 
| 2 | Amy | Lee   | 
| 3 | James | Ride   | 
| 4 | Andrea | Thompson  | 
+----+--------+--------------+ 

Table2.Projects

+-----+-------------+ 
| id | name  | 
+-----+-------------+ 
| 13 | Lmental  | 
| 26 | Comunica | 
| 28 | Ecobalear | 
| 49 | Puigpunyent | 
+-----+-------------+ 

Table3.Users_Projects

+----------+-------------+ 
| id_users | id_projects | 
+----------+-------------+ 
| 1  | 13   | 
| 1  | 28   | 
| 2  | 13   | 
| 2  | 28   | 
| 2  | 49   | 
| 3  | 28   | 
| 3  | 49   | 
| 4  | 49   | 
+----------+-------------+ 

Je voudrais imprimer quelque chose comme ceci:

+--------+--------------+----------------------------------+ 
| name | lastname  | project       | 
+--------+--------------+----------------------------------+ 
| Peter | Elk   | Lmental,Ecobalear    | 
| Amy | Lee   | Lmental,Ecobalear, Puigpunyent | 
| James | Ride   | Ecobalear,Puigounyent   | 
| Andrea | Thompson  | Puigpunyent      | 
+--------+--------------+----------------------------------+ 

Répondre

2

Quelque chose comme ...

SELECT Users.name, Users.lastname, Projects.name 
FROM (Users, Projects, Users_Projects) 
WHERE Users_Projects.id_users=Users.id AND Users_Projects.id_projects=Projects.id 
ORDER BY ... 

... émet un seul utilisateur/projet par ligne, que vous aurez alors manipuler dans la langue choisie.

Tenter d'effectuer la concaténation, etc. dans SQL est susceptible de conduire à une requête assez horrible.

+0

+1 pour répondre à la question ridiculement simple –

+0

merci. Je sais comment faire cette requête et le reste avec PHP. Je voulais juste savoir si je pouvais l'obtenir directement avec seulement mysql. désolé de faire des questions trop simples, n'était pas mon but. – Thomas

+0

vous pouvez utiliser group_concat pour les obtenir – Chella

Questions connexes