Wie kann ich Abfragen in Slick aggregieren?

8

Zum Beispiel habe ich die folgenden Tabellendefinitionen:

%Vor%

Und ich möchte den größten Raum für jedes Haus auswählen.

Ich kam auf den folgenden Trick:

%Vor%

Es tut, was ich brauche, ist aber hässlich, total unlesbar und scheint die Performance zu verletzen. Ich habe versucht, groupBy bei der Abfrage zu verwenden, aber ich verstehe ein Kernkonzept falsch - ich kann die Typen nicht richtig finden.

Gibt es eine bessere Möglichkeit, eine solche Aggregatabfrage in Slick durchzuführen?

    
Rogach 22.07.2013, 09:22
quelle

1 Antwort

8

Erstens ist diese Art von Abfrage in reinem SQL nicht ganz einfach. Slick groupBy übersetzt am Ende in SQL GROUP BY, also brauchen wir eine SQL-Abfrage mit GROUP BY

Eine solche Abfrage könnte aussehen wie

%Vor%

Dies kann jetzt in glatt

übersetzt werden %Vor%

Ich hatte jedoch Probleme mit aggregierten Abfragen, die in anderen Abfragen in der aktuellen Slick-Version verwendet wurden.

Aber die Abfrage kann ohne eine GROUP BY mit EXISTS

geschrieben werden %Vor%

Das kann wieder in glatt übersetzt werden

%Vor%

Eine andere Option wäre wahrscheinlich die Verwendung von Fensterfunktionen , aber ich kann nicht wirklich helfen Sie mit denen, und ich glaube nicht, kann glatt mit ihnen arbeiten.

(Beachten Sie, dass ich keinen Scala-Compiler zur Hand habe, daher könnte es Fehler im Code geben)

    
Martin Kolinek 22.07.2013, 09:53
quelle

Tags und Links