2016-05-24 4 views
-1

So sagen, ich habe eine Tabelle mit Einträgen, die einen Produktnamen, einen Benutzer und die Preisgestaltung des Produkts haben.Sortierung zweimal mit einer SQL-Abfrage

Mein Problem ist, dass ich eine Ergebnismenge erhalten möchte, gruppiert die Produkte, die ein einzelner Benutzer zusammen gekauft, und sortiert dann diese Produkte lexikographisch.

So, wie jedes Produkt kaufte einen Benutzer, dessen Name mit einem A beginnt, ist in einem eigenen kleinen Block gruppiert, mit jedem Produkt auch in alphabetischer Reihenfolge (Candy vor Cat food, zum Beispiel), mit einem Benutzer, dessen Name beginnt mit P danach.

Kann mir jemand erklären, wie ich damit anfangen könnte?

+1

"um nach Usernamen, Produktname" – GendoIkari

+0

'ORDER BY Benutzer, product_name 'um damit anzufangen. Ist es das, wonach du fragst? – Serg

Antwort

2

Eine SQL-Abfrage gibt eine Tabelle mit Zeilen und Spalten zurück. Sie können eine Spalte für den Kunden und eine weitere für das Produkt und sortieren nach Kunde und innen nach Produkt (ORDER BY client, product). Sie erhalten keine unterschiedlichen "Blöcke" von Daten.

Wenn Sie das schöner wollen, benötigen Sie einige Software, um einen Bericht (d. H. Daten mit einem Layout) basierend auf der Abfrage zu erstellen.

Was Sie mit SQL tun, obwohl, Daten zu unterdrücken, wie zum Beispiel:

select 
    case when client = lag(client) over (order by client, product) then null else client end 
    as client, 
    product 
from bought 
order by client, product; 

Beispieler:

 
client | product 
--------+-------- 
Max  | cup 
     | saucer 
     | plate 
Elsa | mug 
     | plate