2009-04-29 8 views
1

OK quand je fais une demande je veux que tous les articles avec le même group_id soient "ensemble" par exemple 117,117,134,111 est bien mais 117,134,117,111 n'est pas bien parce que les group_id 117 ne sont pas tous "ensemble". J'espère que cela à du sens. La seule façon dont je sais comment y parvenir est de classer mes résultats par group_id, mais si je veux commander par prix ou quelque chose comme ça, est-ce qu'il y a un moyen de le faire en gardant tous les group_id correspondants?MySQL: garder la colonne ensemble dans les résultats?

Merci.

+0

Pourquoi est-ce rejeté? Question valide –

Répondre

1

Oui, vous venez de commander à la fois, de sorte que votre ORDER BY devrait ressembler à ceci:

ORDER BY group_id, price 

qui va d'abord par ordre group_id, puis par prix. Donc, tous les mêmes group_ids seront ensemble, mais chaque fois qu'il y en a plusieurs avec le même group_id, ils seront classés par prix. Votre question est un peu ambiguë, donc juste pour expliquer au cas où ce que vous vouliez réellement - il n'y a pas de moyen facile de classer par ordre de prix et de garder des groupes identiques, cela n'a aucun sens . Ce que je veux dire est, si vous avez les données suivantes:

group_id price 
117  2.00 
117  5.00 
111  4.00 
134  1.00 

Vous ne pouvez pas sélectionner facilement dans cet ordre:

group_id price 
134  1.00 
117  2.00 
117  5.00 
111  4.00 
+0

Bonjour Tchad, merci d'avoir éclairci ça, l'exemple que vous avez montré est EXACTEMENT ce que j'essayais de faire. Mais je suppose que je ne peux pas faire ça. Merci! –

1

Ensuite, vous auriez à commander plusieurs colonnes, donc: de cette façon

SELECT group_id, price, name 
FROM groups 
ORDER BY group_id, price; 

, tous les groupes des utilisateurs sont ensemble, et au sein de ces « groupes » de groupids, tout est trié par son prix. Ou ai-je mal compris votre question?

-1

Pourquoi ne pas vous commandez par prix ET group_id ???

SELECT price, group_id, ... 
FROM products 
WHERE 1=1 
ORDER BY price DESC, group_id 

Cela montrera les plus grands prix d'abord, et pour un prix égal, il affichera la group_id consécutive

0

je ferais:

SELECT price, group_id 
FROM groups 
WHERE 1=1 
ORDER BY group_id, price DESC 

Pour montrer des groupes consécutifs, puis les prix dans l'ordre descendant.

Questions connexes