2016-10-03 36 views
1

我有命令Laravel/MySQL的GROUPBY訂貨

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

,我將回到那裏通過created_at添加的最後一集系列。但問題是,當我把它放在託管所有工作,但現在我把它放在VPS服務器上,我總是列出第一集。如果我group by serial_id之後添加desc它的工作,但它是不可能在laravel(-> groupBy ('serial_id')

共享主機:

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

我的VPS:

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

預先感謝您的幫助

+0

也許你會在這種情況下使用RAW:'GROUPBY(DB ::原料( 'serial_id降序'))' – Manish

回答

0

也許你會在這種情況下必須使用RAW:groupBy(DB::raw('serial_id desc'))

像下面

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

謝謝,沒有想到我使用RAW :) – domiQ

1

似乎你的查詢中有很多錯誤。

失蹤FROMORDER 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 

嘗試這樣的事:

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 

在laravel你可以使用分配順序方向:

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

對不起命令是壞的,這是正確的選擇' * FROM(SELECT * FROM episodes ORDER BY created_at DESC)and t1 GROUP BY serial_id ORDER BY created_at DESC' – domiQ

+0

@domiQ我已經更新了laravel中的組合順序和方向 – scaisEdge

+0

不能錯誤的設置?共享主機的作品,但不是VPS? – domiQ