1

私は病院の医師で、OO.org Base からレポートを作成しようとしています。これにより、各患者の最新の 3 つの血液検査が得られます。

次のテーブルを含むデータベースがあります。それぞれに日付 (bld.date) と時間 (bld.time) フィールドがあり、「訪問」と 1 対多の関係があります)

私の出発点は、次の SQL クエリです。

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

関連する患者と入院の詳細とともに、すべての血液結果を返します。

私は、SQL に関する (駆け出しの) 知識の限界に達しています。入院ごとに最新の 3 つの結果のみを返す方法についての指針を示していただき、本当に感謝しています。

PS 直近の 3 つの結果に加えて、最初の結果も取得できれば、大きなボーナスになります。

4

2 に答える 2

-1

使用しているSQLデータベースはわかりませんでしたが、これでうまくいくと思います

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 直近の 3 つの結果に加えて、最初の結果も取得できれば、大きなボーナスになります。

「SELECT TOP 3 *」の代わりに「SELECT TOP 1 *」を使用します。

于 2012-04-22T20:31:51.100 に答える
-1

OK、あなたが何をしようとしているのか理解できたので、次の 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を 1 つの列に結合してtimestamp代わりに使用することをお勧めします。

于 2012-04-22T20:33:50.097 に答える