У меня есть простой форум на моем сайте, который почти идеален. Так близко, но еще до сих пор ...Выберите 2 colums вместе максимум 1
Следующая SQL используется для создания вида спереди странице форума, где пользователи могут просматривать темы и резюме, который ответив:
SELECT COUNT(forumtopics.forumtopicline) AS totalthreads
, forumtopicline
, forumtopics.whenadded AS threaddate
, forumtopics.whoadded AS author
, forumtopics.title
, COUNT(forumreply.forumtopic) AS replies
, MAX(forumreply.whenadded) AS replydate
, forumreply.whoadded AS replier
FROM forumtopics
LEFT JOIN forumreply ON forumtopicline = forumreply.forumtopic
WHERE forumtopics.topic LIKE '%%'
OR forumtopics.title LIKE '%%'
OR forumreply.reply LIKE '%%'
GROUP BY forumtopicline
ORDER BY
CASE
WHEN COUNT(forumreply.forumtopic) > 0 THEN MAX(forumreply.whenadded)
WHEN COUNT(forumreply.forumtopic) = 0
OR forumreply.forumtopic IS NULL THEN MAX(forumtopics.whenadded)
END
DESC
LIMIT 0 , 30
ли работа почти идеально. Это дает мне дату начала потока, автора потока и дату последнего ответа, и он правильно оценивает их, когда сообщение имеет самый последний ответ в верхней части.
Проблема с
MAX(forumreply.whenadded) AS replydate, forumreply.whoadded AS replier
Это возвращает дату последнего сообщения в теме, но имя первого отвечающего независимо от даты. Я уверен, что должен быть способ завершить этот довольно элегантный SQL, чтобы избежать манипуляций на уровне приложений. Любая помощь с благодарностью получила. Скорее очевидно, мне нужен forumreply.whoadded, чтобы быть из того же ряда, что и MAX (forumreply.whenadded)
DB = Mysql. Схема:
CREATE TABLE forumtopics (
forumtopicline SERIAL
,title VARCHAR(256)
,topic TEXT
,whenadded DATETIME
,whoadded VARBINARY(128)
,whenaltered DATETIME
,whoaltered VARBINARY(128)
,inuse BOOL
);
CREATE TABLE forumreply (
forumreplyline SERIAL
,forumtopic BIGINT
,reply TEXT
,whenadded DATETIME
,whoadded VARBINARY(128)
,whenaltered DATETIME
,whoaltered VARBINARY(128)
,inuse BOOL
);
Высокий. Это работает отлично. Огромное спасибо. Для тех, кто хочет использовать сам SQL, размещение текста поиска между «%%» позволит форуму также иметь функцию поиска. –
точно :) рад, что я мог помочь :) cheers mate – Stephan