1

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

我有一个包含以下表格的数据库:“pat”(每个唯一患者的详细信息)“visit”(每次入院的详细信息,与“pat”具有一对多关系)“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 的(初出茅庐的)知识已经有限,我真的非常感谢关于如何只返回每次录取的三个最新结果的指针。

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

4

2 回答 2

-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

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

使用“SELECT TOP 1 *”而不是“SELECT TOP 3 *”。

于 2012-04-22T20:31:51.100 回答
-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.timeandbld.date合并为一列并timestamp改用。

于 2012-04-22T20:33:50.097 回答