mysql - 需要帮助来定义一个查询,我试图从 3 个不同的表中获取数据

标签 mysql

我有下表:

  • 床垫: 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

我将其分组,因为我需要床垫和病人床,但我不知道如何仅使用最后一个条目添加压力图数据。所以,我得到了绿色数据,我需要知道如何添加黄色数据。

enter image description here

谢谢!

最佳答案

我找到了使用 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/

相关文章:

Mysql - 触发器不更新我的数据库

mysql - MySQL 中除了使用 UNION @ UNION ALL 之外合并 2 个以上的 SELECT 语句

mysql - 当发生故障转移时,MySQLFabric是否支持mysql复制半同步(5.7版本)?

c# - MySqlContext如何将查询写入变量

php - 重新调用递归函数的最合适方法是什么?

python - 在docker容器中启动mysql后插入数据

mysql - SQL,如果至少一行包含值,则不提取 user_id

mysql - 从 GROUP BY 中获取 MAX

数据库 |获取数据库错误,无效使用组功能

mysql - 是否可以通过在数据库中存储为字符串的数字查询顺序以按降序获取数据作为数字