Einzelne mysql wählen Sie Join-Tabellen zu einem JSON-hierarchischen Fragment, wie?

9

Was wäre der beste und eleganteste Weg, um von einem einzelnen MySQL abzurufen, die alle Informationen aus zwei verbundenen Tabellen abfragen, aber hierarchisch?

Ich habe diese zwei Tabellen:

%Vor%

und ich möchte das folgende hierarchische JSON-Fragment ausgeben:

%Vor%

"Lösung" 1:

Führen Sie eine vollständige Auswahl für die verknüpften Tabellen durch und schreiben Sie anschließend einen Code, um das json-Fragment zu erstellen:

%Vor%

Problem: Ich habe eine Menge hässlichen foreach-type Code, um das JSON-Fragment zu erstellen

"Lösung" 2:

Gruppieren Sie nach Unternehmen alle Mitarbeiter in einem JSON-String:

%Vor%

Hier ist "employees" bereits ein json-Fragment, ich muss nur die company.id und den Namen jsonifizieren. Aber das JSON-Fragment in MySQL zu erstellen, scheint sehr schlecht zu sein.

Irgendeine Einsicht oder andere Lösung?

Vielen Dank

    
Ludo Ma Non Troppo 16.10.2012, 20:27
quelle

2 Antworten

1

Ich würde wahrscheinlich eine Abfrage wie Ihre Lösung 1 verwenden, fügen Sie einfach eine "sort by company.id" hinzu und dann eine Schleife durch die Tabelle, eine Datenstruktur für jede Zeile aufzubauen, wenn die Firma die gleiche ist wie die vorherige, schieben Sie die Mitarbeiterdaten in das Unternehmen, sonst definieren Sie die neue Firma und beginnen Sie damit, die Mitarbeiterdaten einzutragen.

Wie Carlos Quijano sehe ich hier keine foreach message. (aber die Sortierung macht es viel einfacher zu handhaben)

    
MortenSickel 30.10.2012, 11:55
quelle
0

Da Sie für die Ausführung einer einzelnen MySQL-Abfrage und nicht für jeden Code mit hässlichem Code verantwortlich sind, sollten Sie wahrscheinlich kein hierarchisches JSON-Ergebnis , können Sie Ihrem Code etwas Eleganz verleihen, indem Sie die Abfrageergebnisse mit DbUtils-Abfrage in eine Sammlung serialisieren.

QueryRunner run = neuer QueryRunner (dataSource);

%Vor%

Aber wenn Sie ein hierarchisches JSON-Ergebnis generieren müssen , stimme ich der Antwort von MortenSickel unten zu, reduzieren Sie diese Sammlung mit einer getippten foreach und schließlich JSON-Encodierung mit GSON, ich denke, es ist absolut nichts falsch daran das.

    
Carlos Quijano 20.11.2012 01:15
quelle

Tags und Links