加入两个查询,其中一个被分组

时间:2018-01-31 12:24:26

标签: php sql laravel

我正在创建简单的PHP / Laravel应用程序,但我遇到了一个问题: 我需要以某种方式加入2个查询,但我不知道如何。 我可以用一些凌乱的PHP循环来做,但我知道这不是正确的方法。

我在Laravel代码中的查询看起来:

$cars = Car::get();
$drives = Drive::select(DB::raw('car_id, max(odometer) as odometer'))->groupBy('car_id')->get();

在普通的SQL中,例如:

$cars = 'SELECT * FROM cars';
$drives = 'SELECT car_id, max(odometer) as odometer FROM drive GROUP BY car_id';
  

(开车)'car_id'=(汽车)'id'

更新:忘记提及:我在'car'中有'odometer'字段并从驱动器获取max('odometer'),所以如果从'drives'返回了某些东西,它应该覆盖从'汽车'返回的那个

DRIVE:

id
car_id
user_id
odometer
liters_filled
route
is_private
is_refill
is_full
checque
date
deleted_at
created_at
updated_at

CARS:

id
title
plate_number
year
tank_size
odometer
user_id
deleted_at
created_at
updated_at

感谢您的时间和帮助!

2 个答案:

答案 0 :(得分:1)

说实话,我不是100%根据你的要求,但你可以尝试以下方法:

SELECT  cr.id ,
        dr.oodometer

FROM Car cr
INNER JOIN (SELECT dr.car_id,MAX(dr.oodometer) AS oodometer
           FROM Drive dr
           GROUP BY car_id ) dr ON dr.car_id = cr.id

答案 1 :(得分:0)

SELECT cars.*, max(driver.oodometer) as odometer FROM cars
INNER JOIN driver on cars.id=driver.car_id
group by driver.car_id

此查询将为您加入2个表并获取信息。为了示例,我使用的表名是您的变量名。

为Laravel编辑:

mysql config / database.php 中更改:

'strict' => true,

false