SQL カテゴリー記事

レスが付いたらスレッドを上に上げるSQL

2008-02-22 (金)カテゴリSQL, 制作タグ

SQLをある程度書けるとPHPやほかのプログラムの書く量が減ると思う。
実際サブクエリーやSQL関数が使えるだけで随分違う。
最近やっとサブクエリの重要さに気づいて取り組んでいる。
とある掲示板システムでのサンプル

レスが付いたらスレッドを上に上げるSQL

SQL
SELECT *,(SELECT MAX(T2.update_time) FROM entry_tbl as T2 WHERE T2.resflg=T1.ID) as uptime FROM entry_tbl as T1 WHERE resflg=0 ORDER BY uptime DESC,T1.update_time DESC

ここでのresflgは本スレの場合、0が立つ。
レスの場合はIDに紐付けするのでresflgには本スレと同じID番号が入る。
上記だけだとレスの表示処理が入っていないので、もっとカスタマイズすれば
レスも合わせて表示出来る処理に出来そう。。実力不足のため4時間ほど粘ったが思いつかず。
MAX関数はそのフィールド内での最大値取得。

今回収穫はORDER BYで複数フィールドが指定出来るという事に気づいた事
今までは1フィールドしか指定してなかったからなぁ…SQL奥深い。。