我有下表:
床垫: id (PK)、idUser(FK) healthSystemName、建筑物、楼层、房间、床位、引用
患者: id (PK)、idMattress(FK)、idUSer(FK)、姓名、性别、出生日期、medicalRecordNumber、visitrRecordNumber、街道、城市、邮政编码、国家/地区、maxPressureTolerance
压力图: id(PK)、idMattress(FK)、压力数据、最大压力、存在、bodyPosition、created_at、updated_at
我想知道获得以下 View 所需的查询:
Patient.name、Patient.surname、Patient.medicalRecordNumber、Patient.visitRecordNumber、Mattress.room、Mattress.id、PressureMap.PressureData(仅限created_at的最新数据)、PressureMap。存在
- 如果床垫是空的,则应在此 View 中显示该床垫,并显示患者且压力图数据 = NULL
现在,我有以下查询:
SELECT p.name
, p.surname
, p.medicalRecordNumber
, p.visitRecordNumber
, m.room
, m.id mattressID
FROM mattress m
LEFT
JOIN patient p
on p.idMattress = m.id
我将其分组,因为我需要床垫和病人床,但我不知道如何仅使用最后一个条目添加压力图数据。所以,我得到了绿色数据,我需要知道如何添加黄色数据。
谢谢!
最佳答案
我找到了使用 Laravel 查询构建器解决这个问题的方法。
$latestPressureMap = DB::table('pressuremap')
->select('idMattress', DB::raw('MAX(created_at) as last_pressureMap_created_at'), 'presence', 'maxPressure')
->groupBy('idMattress');
$mattress = DB::table('mattress')
->leftJoinSub($latestPressureMap, 'latest_pressureMap', function ($join) {
$join->on('mattress.id', '=', 'latest_pressureMap.idMattress');
})
->leftJoin("patient","mattress.id","=","patient.idMattress")
->select("patient.id", "patient.name", "patient.surname", "patient.medicalRecordNumber", "patient.visitRecordNumber", "mattress.id", "mattress.healthSystemName","mattress.building","mattress.floor","mattress.room", "mattress.bed", "patient.gender", "latest_pressureMap.presence", "latest_pressureMap.last_pressureMap_created_at","latest_pressureMap.maxPressure")
->where('mattress.idUser', '=', $id)
->get();
return view('dashboard',['mattress' => $mattress]);
关于mysql - 需要帮助来定义一个查询,我试图从 3 个不同的表中获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53814240/