返回GROUP BY字段中每个值的最新记录?

时间:2012-04-22 20:24:11

标签: sql openoffice-base

我是一名医院医生,正在尝试从OO.org Base提交报告,该报告将为我的每位患者提供最近三次血液检查。

我有一个包含以下表格的数据库: “拍”(每个独特患者的详细信息) “访问”(每次入场的细节,与“轻拍”的一对多关系) “bld”(每组血液结果的详细信息,每个都有一个日期(bld.date)和时间(bld.time)字段,与“访问”有一对多的关系)

我的出发点是以下SQL查询:

SELECT *
FROM "bld"
INNER JOIN "visit" ON "bld"."visit" = "visit"."id"
INNER JOIN "pat" ON "visit"."pat" = "pat"."id";

返回每个血液结果以及相关患者和入院详情。

我已经达到了我对SQL(初出茅庐)知识的限制,我非常感谢指导如何只返回每次录取的三个最新结果。

如果除了最近的三个结果之外我还可以得到第一个结果,那将是一个巨大的奖励。

2 个答案:

答案 0 :(得分:-1)

您没有告诉您正在使用的是什么sql db,但我认为这样可以使用

SELECT TOP 3 *
FROM bld
INNER JOIN visit ON bld.visit = visit.id
INNER JOIN pat ON visit.pat" = pat.id
ORDER BY bld.date desc, bld.time desc
  如果除了三个以外,这将是一个巨大的奖金   最近的结果我也可以得到第一个结果。

使用“SELECT TOP 1 *”代替“SELECT TOP 3 *”。

答案 1 :(得分:-1)

好了,既然我明白你要做什么,试试这个PHP代码:

$query1 = "SELECT id FROM pat";

$data1 = mysqli_query($dbc,$query1);
while($row = mysqli_fetch_array($data1)) {
    $query2 = "SELECT * FROM `bld` 
    INNER JOIN `visit` ON `bld`.`visit` = `visit`.`id`
    INNER JOIN `pat` ON `visit`.`pat` =  {$row['id']}
    OREDER BY `bld`.`date` DESC, `bld`.`time` DESC LIMIT 3";
    $data2 = mysqli_query($dbc,$query2);
    while($row = mysqli_fetch_array($data1)) {
        //code to be executed   
    }
}

我建议您将bld.timebld.date合并为一列,然后使用timestamp

相关问题