2016-10-03 1 views
1

Ich habe den BefehlLaravel/Mysql groupby Bestellung

SELECT * FROM 
    (SELECT * FROM episodes ORDER BY created_at DESC) and t1 
GROUP BY serial_id 
ORDER BY created_at DESC 

, die ich Serie zurückkehren wird, wo die letzte Folge von created_at hinzugefügt. Aber das Problem ist, dass, als ich es auf Hosting hatte alles funktionierte, aber jetzt lege ich es auf dem VPS-Server und dort listet ich immer die erste Episode auf. Wenn ich desc nach group by serial_id hinzufügen Arbeit es ist, aber es ist nicht möglich, auf Laravel (-> groupBy ('serial_id'))

Shared Hosting:

+---------+-------------+--------+ 
| id  | serial_id | part | 
+---------+-------------+--------+ 
| 8124 | 12   | s02e10 | 
|  362 | 8   | s09e12 | 
| 4673 | 9   | s01e12 | 
|  871 | 4   | s03e24 | 
+---------+-------------+--------+ 

Mein VPS:

+---------+-------------+--------+ 
| id  | serial_id | part | 
+---------+-------------+--------+ 
| 8124 | 12   | s01e01 | 
|  362 | 8   | s01e01 | 
| 4673 | 9   | s01e01 | 
|  871 | 4   | s01e01 | 
+---------+-------------+--------+ 

Vielen Dank im Voraus für Ihre Hilfe

+0

Wahrscheinlich werden Sie RAW haben in diesem Fall zu verwenden: 'groupBy (DB :: raw ('SERIAL_ID desc'))' – Manish

Antwort

0

Wahrscheinlich werden Sie muss in diesem Fall RAW verwenden: groupBy(DB::raw('serial_id desc'))

wie unten

DB::table(DB::raw("(SELECT * FROM episodes ORDER BY created_at DESC) and t1"))->groupBy(DB::raw('serial_id desc'))->orderBy('created_at', 'desc')->get(); 
+0

danke, nicht mir eingefallen RAW verwenden :) – domiQ

1

Scheint, Sie haben eine Menge Fehler in Ihrer Abfrage.

fehlt ein Tabellenname zwischen FROM und ORDER BY

SELECT * FROM (SELECT * FROM 
--       ^^ where is the tablename ? 

ORDER BY episodes created_at DESC) and t1 GROUP BY ORDER BY serial_id created_at DESC 
--    ^^ missing comma, ^^ this 'and' seems in the wrong place and you havent't column for group by and in last another missing comma 

versuchen, etwas wie folgt aus:

SELECT * FROM (SELECT * 
      FROM my_table ORDER BY episodes, created_at DESC) t1 
GROUP BY my_column_for_group_by 
ORDER BY serial_id, created_at DESC 

In Laravel Sie die Reihenfolge Richtung zuordnen könnte mit:

->orderBy('serial_id') 
->orderBy('created_at', 'DESC') 
+0

Leider Befehl schlecht war, dies richtig ist SELECT * FROM (SELECT * FROM Episoden ORDER BY created_at DESC) und t1 GROUP BY serial_id ORDER BY created_at DESC' – domiQ

+0

@domiQ Ich habe die asnwer für zusammengesetzte Reihenfolge von und Richtung in Laravel – scaisEdge

+0

kann nicht falsch Einstellung sein? das Shared Hosting funktioniert, aber nicht das VPS? – domiQ