2016-04-25 12 views
1
Join Sortierung

Lets sagen, ich habe eine einfache Tabelle der NutzerLaravel: eine Spalte in der linken

id | userName 3 Michael 4 Mike 5 George

Und eine andere Tabelle ihrer Autos und Preise

id | belongsToUser | carPrice 1 4 5000 2 4 6000 3 4 8000

Ich möchte einen linken Join zu machen, der den höchsten oder niedrigsten carPrice zurückgeben würde Im Moment würde die Abfrage die letzte/erste Instanz dieses Benutzers carPrice zurückgeben. Ich habe versucht, die Reihenfolge in verschiedenen Join-Abfragen eingeben, aber ohne Erfolg.

Ich habe eine Hilfsfunktion, die den höchsten/niedrigsten Preis auf Anfrage zurückkommen würde, aber ich bin mir nicht sicher, wie das in dieser Abfrage passen würde, wie ich laravels eingebaute Paginieren

Antwort

1

Dies ist das Aggregat Problem verwenden möchten so ist hier die Solvatation:

DB::table('users') 
->leftJoin('carPrices', 'belongsToUser', '=', 'users.id') 
->select('users.*', DB::raw('MAX(carPrice) as highestCarPrice'), DB::raw('MIN(carPrice) as lowestCarPrice')) 
->groupBy('users.id') 
->get(); 
+0

ich die folgende Fehlermeldung erhalten: 'SQLSTATE [42000]: Syntaxfehler oder Zugriffsverletzung: 1064 Sie haben einen Fehler in Ihrer SQL-Syntax; Überprüfen Sie das Handbuch, das Ihrer MariaDB-Serverversion entspricht, für die richtige Syntax, die in der Nähe von "Gruppe" von "Benutzer" verwendet werden soll.'id 'in Zeile 1 (SQL: wählen Sie 'Benutzer'. *, MAX (carPrice) AS highestCarPrice, MIN (autoPrice) AS lowestCarPrice von 'Usern' links beitreten 'carPrices' auf' belongsToUser' = users.id '' Gruppe von 'Benutzer'.'id')' –

+0

Sory Ich mache einen Fehler in diesem Code vergaß 'table' nach 'DB ::'. Bitte überprüfen Sie auch alle Namen von Tabellen, da Sie diese hier nicht veröffentlicht haben. –

+0

Ja, ich habe das vor der Ausführung bemerkt. Ebenfalls ; nach get() –