2010-08-01 8 views
2

Je suis en train de faire une requête pour obtenir des résultats:groupe Mysql Requête par

J'ai une table avec des données:

client | price 

1 | 100 

1 | 150 

1 | 200 

2 | 90 

2 | 130 

2 | 200 

3 | 95 

3 | 120 

3 | 250 

Je voudrais avec une requête pour sélectionner les résultats et l'ordre par le prix et le client et les obtenir sous cette forme, commandé par le meilleur prix de chaque clint:

2 | 90 

2 | 130 

2 | 200 

3 | 95 

3 | 120 

3 | 250 

1 | 100 

1 | 150 

1 | 200 
+1

Que se passe-t-il si deux clients sont des liens sur leur prix le plus bas, mais pas sur leur deuxième plus bas? Peuvent-ils être retournés dans l'un ou l'autre ordre, ou le deuxième prix le plus bas devrait-il être utilisé comme un tie-breaker? –

+0

Mark, deuxième commentaire lu, merci pour cette remarque. Corrigé la réponse – AlexanderMP

+0

@Alexander: Le deuxième commentaire est le premier commentaire maintenant :). J'ai décidé de supprimer mon premier commentaire car je ne suis plus intéressé par la réponse. Si je connais la réponse à la deuxième question, ça me suffit. –

Répondre

3
SELECT tbl.client, ytbl.price 
FROM (SELECT client, min(price) as mpr FROM yourtable group by client) tbl 
JOIN yourtable ytbl ON ytbl.client=tbl.client 
ORDER BY tbl.mpr ASC, tbl.client ASC, ytbl.price ASC 

Quelque chose comme ça ...

+0

+1: Drats - me battre. –

+0

Bonjour Alexandre, ça marche super! Merci beaucoup :-) Salutations Nik – Nik

+0

Super d'entendre ça! Je vois que vous êtes nouveau ici. Si vous trouvez la réponse à votre question, marquez-la comme la bonne réponse. Lorsque vous acceptez une réponse, vous obtenez des points, de même que la personne qui donne la bonne réponse. C'est ce qui fait avancer ce forum (outre l'altruisme). – AlexanderMP