2011-08-01 4 views
0

J'ai 2 tables. Les membres et leurs projets. J'ai besoin d'extraire tous les utilisateurs, avec le nombre de leurs projets, triés par le nombre de projets.Joindre des tables et agréger des données dans MySQL?

Tableau: users:

id | username | email | password | reg_date 

Tableau: projects:

id | title | descr | autor 

Pour le rejoindre:

projects.autor = users.id 

Répondre

1
SELECT 
    users.id, 
    users.username, 
    COUNT(projects.id) AS `num_projects` 
FROM 
    users 
LEFT OUTER JOIN 
    projects 
ON 
    projects.autor = users.id 
GROUP BY 
    users.id 
ORDER BY 
    num_projects DESC 
1
SELECT u.id AS id, u.username AS username, u.email AS email, u.password AS password, u.reg_date AS reg_date, COUNT(p.id) AS projects_count 
FROM users u 
LEFT OUTER JOIN projects p ON p.autor = u.id 
GROUP BY u.id 
ORDER BY projects_count DESC