Sql查询查找具有特定最后状态的订单

时间:2016-08-22 12:49:46

标签: php mysql sql laravel laravel-4

我有一个名为“orders”的表,其中包含以下属性

订单

ID

另一个名为order_statuses的表,其中包含以下属性

order_statuses

ID

ORDER_ID

状态

不同的状态为待处理,正在处理,已发货,已完成

我正在尝试查找最后状态为例如下的订单。特定年份和月份的待定

我在laravel中尝试过的SQL查询是

Order::join('order_statuses','orders.id','=','order_statuses.order_id')->orderBy('order_statuses.id', 'desc')->groupBy('order_statuses.order_id')->where('order_statuses.status','=','Pending')->whereRaw("YEAR(orders.created_at) = ".$year)->whereRaw("MONTH(orders.created_at) = 1")->count()

我检查了查询,发现如果写get()方法而不是count(),那么我得到一些结果,但它不适用于最后一个状态。并且计数功能也不起作用。

1 个答案:

答案 0 :(得分:0)

我不知道为什么你的查询中有撇号?只需删除它就可以了:

select * from orders inner join 
order_statuses on (orders.id = order_statuses.order_id)
where order_statuses.status = ? and 
YEAR(orders.created_at) = 2016 and 
MONTH(orders.created_at) = 1 
group by order_statuses.order_id 
order by order_statuses.id desc

并且您错过了您的状态值。

相关问题