2009-04-29 5 views
1

OK, wenn ich eine Anfrage mache Ich möchte alle Elemente mit der gleichen group_id "zusammen" sein zum Beispiel 117,117,134,111 ist in Ordnung, aber 117,134,117,111 ist nicht in Ordnung, weil die group_id 117 nicht alle "zusammen" sind. Ich hoffe das ergibt Sinn. Der einzige Weg, wie ich das erreichen kann, besteht darin, meine Ergebnisse nach group_id zu sortieren, aber wenn ich nach Preis oder ähnlichem sortieren möchte, gibt es eine Möglichkeit, dies zu tun, während alle passenden group_id zusammengehalten werden?MySQL: Spalte in den Ergebnissen zusammenhalten?

Danke.

+0

Warum wird das abgelehnt? Gültige Frage –

Antwort

1

Ja, man muss nur durch beide bestellen, so dass Ihr ORDER BY sollte wie folgt aussehen:

ORDER BY group_id, price 

Das wird erster Ordnung durch group_id, dann nach Preis. Also werden die gleichen group_ids zusammen sein, aber wenn es mehrere mit derselben group_id gibt, werden sie nach Preis sortiert.

Ihre Frage ist ein wenig mehrdeutig, also nur erklären, falls es das ist, was Sie eigentlich wollten - es gibt keinen einfachen Weg, "hauptsächlich" nach Preis zu sortieren und nur identische group_ids zusammen zu halten, das macht keinen Sinn . Was ich meine ist, wenn Sie die folgenden Daten haben:

group_id price 
117  2.00 
117  5.00 
111  4.00 
134  1.00 

Sie können es nicht einfach auswählen, in dieser Reihenfolge:

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

Hallo Tschad, danke, dass du das geklärt hast, das Beispiel, das du gezeigt hast, ist GENAU was ich versucht habe zu tun. Aber ich denke, ich kann das nicht tun. Vielen Dank! –

1

Dann müßten Sie nach mehreren Spalten bestellen, so:

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

Auf diese Weise werden alle groupid die zusammen sind, und innerhalb dieser ‚Gruppen‘ von Gruppenkenn, alles sortiert ist, indem sie es den Preis ist. Oder habe ich deine Frage missverstanden?

-1

Warum bestellen Sie nicht nach Preis UND group_id ???

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

Dies wird zunächst die größten Preise zeigen, und für die Preise gleich, es wird die group_id in Folge

0

ich tun würde zeigen:

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

Für Gruppen aufeinander folgende, zeigt und die Preise dann in nachkommender Reihenfolge.

Verwandte Themen