【问题标题】:Need help to define a query, where I am trying to get data from 3 different tables需要帮助来定义查询,我试图从 3 个不同的表中获取数据
【发布时间】:2018-12-17 11:23:35
【问题描述】:

我有以下表格:

  • 床垫: id (PK), idUser(FK) healthSystemName, building, floor, room, bed, reference

  • 患者: id (PK)、idMattress(FK)、idUSer(FK)、姓名、姓氏、性别、出生日期、MedicalRecordNumber、visiterRecordNumber、街道、城市、邮政编码、国家、maxPressureTolerance

  • 压力图: id (PK)、idMattress(FK)、pressureData、maxPressure、存在、bodyPosition、created_at、updated_at

我想知道获得以下视图需要使用的查询:

Patient.name、Patient.surname、Patient.medicalRecordNumber、Patient.visitRecordNumber、Mattress.room、Mattress.id、PressureMap.pressureData(仅由 created_at 提供)、PressureMap。存在

  • 如果床垫是空的,它应该显示在这个视图中,患者和 pressureMap 数据 = 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

我在哪里分组,因为我需要床褥和床病人,但我不知道如何只添加最后一个条目的 pressureMap 数据。所以,我得到了绿色数据,我需要知道如何添加黄色数据。

谢谢!

【问题讨论】:

  • 阅读JOIN的文档是一个好的开始。
  • 选择患者姓名、患者姓名、患者医疗记录编号、患者访问记录编号、床垫.房间、床垫编号 FROM mattress LEFT JOIN patient on Patient.idMattress = 床垫编号
  • 请将您的查询添加到问题本身(使用“编辑”按钮),然后解释您遇到的问题 - 例如它会给你一个错误,还是返回意想不到的结果?无论哪种情况,都向我们展示输出。为了更清楚起见,请举例说明源数据的外观以及您希望从查询中获得什么结果。

标签: mysql


【解决方案1】:

我找到了使用 Laravel Query builder 解决它的方法。

$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]);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-13
    • 1970-01-01
    • 2016-05-29
    • 2012-03-05
    • 1970-01-01
    • 2022-01-10
    • 2021-10-05
    相关资源
    最近更新 更多