2009-09-24 6 views
1

J'ai une tableSQL: comment écrire ORDER BY en fonction de la valeur dans un groupe?

project issues updated 
    1 1 2009-09-03 
    1 2 2009-09-08 
    2 1 2009-09-12 
    2 2 2009-09-01 

et je voudrais trier de sorte que les projets sont classés par ordre décroissant de sorte que le projet avec le dernier numéro mis à jour est d'abord, etc., mais toutes les questions d'un projet sont gardés ensemble et les questions sont dans l'ordre croissant au sein du projet en fonction du nombre d'émission

le résultat devrait être:

project issues updated 
    2 1 2009-09-12 
    2 2 2009-09-01 
    1 1 2009-09-03 
    1 2 2009-09-08 
+0

Ajoutez 4 espaces avant chaque ligne de votre table – Fragsworth

+0

L'a fait pour lui. –

+0

BTW, je crois qu'il y a une faute de frappe sur la dernière ligne de la première table et 'issues' devrait être 2, mais je ne suis pas sûr si n'a pas corrigé cela dans mon édition. –

Répondre

3

Je pense que cela fonctionnerait (désolé, pas mysql à portée de main, donc je viens de tester sur sqlite ...):

select t.project, t.issues, t.updated from t 
join (select project, max(updated) as dat 
     from t group by project) as t1 
    on (t.project = t1.project) 
order by t1.dat desc, t.issues asc 
5

Quelque chose comme cela devrait faire le travail:

SELECT mt.* 
FROM mytable mt 
JOIN (SELECT MAX(updated) AS LastUpdated, project 
       FROM mytable GROUP BY project) lu ON lu.project = mt.project 
ORDER BY lu.LastUpdated DESC, mt.Issues 

Oups, je viens de voir la balise MySQL. Je ne sais pas si cette solution fonctionne dans MySQL

1

SELECT p.project, p.issues, p.updated, max(r.updated) 
FROM table p INNER JOIN table r ON r.project=p.project 
GROUP BY p.project, p.issues, p.updated 
ORDER BY 4 DESC, p.project, p.issues 

J'ai essayé une requête équivalente dans mysql & il semble que cela fonctionne comme vous le souhaitez.

+0

Merci ça marche. Bien que les problèmes soient maintenant inversés dans chaque projet. Que changerais-je pour garder les problèmes dans une séquence numérique? – sdfor

+0

Ah! Désolé, erreur dans la jointure. Devrait être réparé maintenant. –

Questions connexes