私のフォーラムを少しアップグレードして、トピックの表示方法を変更したい。トピックへデータベース(JOIN?)の結果をソートする際のヘルプ
CREATE TABLE `forum_emner` (
`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`type_forum` CHAR(9) NOT NULL,
`gjengid` INT(10) UNSIGNED NULL DEFAULT '0',
`sticky` TINYINT(1) UNSIGNED NULL DEFAULT '0',
`emne` VARCHAR(255) NOT NULL,
`innlegg` TEXT NOT NULL,
`brukerid_starter` MEDIUMINT(8) UNSIGNED NOT NULL,
`startet_dato` INT(10) UNSIGNED NOT NULL,
`antall_lest` INT(10) UNSIGNED NULL DEFAULT '0',
`antall_svar` INT(10) UNSIGNED NULL DEFAULT '0',
PRIMARY KEY (`id`),
INDEX `type_forum` (`type_forum`),
INDEX `gjengid` (`gjengid`),
INDEX `sticky` (`sticky`),
INDEX `brukerid_starter` (`brukerid_starter`)
)
COLLATE='latin1_swedish_ci'
ENGINE=MyISAM
ROW_FORMAT=DEFAULT
回答(emneidがforum_emnerテーブルのIDに等しい)、このテーブルに格納されています:
私のトピックは、このテーブルに格納された答えだったとき
CREATE TABLE `forum_svar` (
`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`emneid` INT(10) UNSIGNED NOT NULL,
`brukerid_av` MEDIUMINT(8) UNSIGNED NOT NULL,
`innlegg` TEXT NOT NULL,
`dato` INT(10) UNSIGNED NOT NULL,
PRIMARY KEY (`id`),
INDEX `emneid` (`emneid`),
INDEX `brukerid_av` (`brukerid_av`)
)
COLLATE='latin1_swedish_ci'
ENGINE=MyISAM
ROW_FORMAT=DEFAULT
ダトですposted(phpでtime())。
私が望むもの:forum_svarのフィールドの後ろにあるトピックを並べ替える必要があります。最新の回答を持つトピックがトップにあります。しかし、トップトピックの後にトピックが作成された場合は、このトピックがトップになるはずです(フォーラムの実際の仕組み)。
私は自分自身を試しましたが、うまく動作しません。
SELECT *, `forum_emner`.id AS UnikTradID FROM `forum_emner`
LEFT JOIN `forum_svar` ON (`forum_emner`.id = `forum_svar`.emneid)
WHERE `forum_emner`.type_forum = :type AND `forum_emner`.sticky = 0
ORDER BY `forum_svar`.dato DESC LIMIT :p1, :p2
ヘルプがありますか? :)
私はあなたがmysqlデータベースの数値としてタイムスタンプを保存しないことをお勧めします。代わりに[mysql timestamp](http://dev.mysql.com/doc/refman/5.0/en/timestamp.html)を使用してください。 – cypher