我正在创建简单的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
感谢您的时间和帮助!
答案 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
。