2017-04-07 4 views
0

Ich habe diese DB: (Note id ist einzigartig)MySQL, wie in Untergruppen von Zeilen Gruppe

enter image description here

Ich versuche, diese zu bekommen:

enter image description here

Was wäre eine effiziente SQL-Abfrage, um dies zu erreichen?

+5

Sie möchten diese Art von Operation nicht wirklich in SQL durchführen. Es ist viel besser auf der Anwendungsebene zu tun. Möglich, aber wirklich nicht wert. –

+3

Es ist besser, dies auf App-Seite zu tun (Java/php/...) Verwenden Sie eine einfache Reihenfolge von für 'group_id', dann durchlaufen Sie die Ergebnismenge. Wenn sich die 'group_id' ändert, wenden Sie die Header an. – gaborsch

Antwort

2
SELECT 
    DISTINCT 
    foo2.group_id AS group_id, 
    if(foo1.group_id = foo2.group_id, foo1.id, NULL) AS id, 
    if(foo1.group_id = foo2.group_id, foo1.some_attr, NULL) AS some_attr 
FROM mytable AS foo1 
    JOIN 
    (SELECT DISTINCT group_id FROM mytable) as foo2   
    ORDER BY group_id, id 
1

Sie scheinen eine Ergebnismenge mit der Formatierung der Ergebnismenge zu mischen. SQL-Ergebnismengen sind Tabellen konsistenter Zeilen. Der nächste, den Sie kommen können, ist, die Reihenfolge Ihrer Spaltennamen in der SELECT-Anweisung zu ändern. Sie müssen Ihre eigenen Zeilenumbrüche zum Zeitpunkt der Präsentation hinzufügen.