Drupal で、データベースから最大値を得る方法 (SELECT MAX...)

Drupal で、「ログから、あるタイプだけのデータから最新のデータを取得する」には、どうしたらいいだろうか?これをソースコード的に言い換えると、「ログ=『watchdog』 テーブルから、カラム 『type』 を絞り込んで、カラム 『timestamp』 の最大値を得る」ということになる。 #Drupal では、ログシステムのことを watchdog と呼んでいる。そのログが入っているテーブル名が watchdog で、SQL 文中では {watchdog} で表す。 type で指定する文字列を $type とすると、実際のSQL 文は、SELECT MAX(timestamp) FROM {watchdog} WHERE type=$type; となるだろう。Drupal の場合は、それを db_query 関数で実行してその結果を $result に入れてあげればよいのだが、このままでは MAX(timestamp) の値が $result に入らない。ではどうするかというと、さらに $max = db_result($result) とする。 以下のコードを参考にして欲しい。
<?php

...

$type   = 'your_type';
$result = db_query("SELECT MAX(timestamp) FROM {watchdog} WHERE type='%s'", $type);
$max    = db_result($result);

...

?>
トラックバック URL: https://perltips.twinkle.cc/trackback/173
Posted on 2007-02-23 by yas |