Это продолжение еще одной проблемы, с которой я столкнулся с получением последней записи, вставленной в выбранный запрос
Я пытаюсь отредактировать запрос, который Андреа был достаточно любезен, чтобы помочь мне вчера, который отлично работает для одной страницы, но я пытаюсь создать подобный запрос без особой удачи.
Мне нужно, чтобы на каждой доске отображалось название доски, количество тем и сообщений, связанных с этой доской, а также пользователь, тема и дата последнего сообщения (которое работает)
Мне нужно получить название форума, тему и количество сообщений
Это моя структура таблицы
CREATE TABLE `boards` (
`boardid` int(2) NOT NULL auto_increment,
`boardname` varchar(255) NOT NULL default '',
PRIMARY KEY (`boardid`)
);
CREATE TABLE `messages` (
`messageid` int(6) NOT NULL auto_increment,
`topicid` int(4) NOT NULL default '0',
`message` text NOT NULL,
`author` varchar(255) NOT NULL default '',
`date` datetime(14) NOT NULL,
PRIMARY KEY (`messageid`)
);
CREATE TABLE `topics` (
`topicid` int(4) NOT NULL auto_increment,
`boardid` int(2) NOT NULL default '0',
`topicname` varchar(255) NOT NULL default '',
`author` varchar(255) NOT NULL default '',
PRIMARY KEY (`topicid`)
);
и запрос, который я придумал, основываясь на запросе, который Андреа сделала для меня. Что этот запрос выводит в названии форума, количестве тем и сообщений (в котором написано 1, хотя их 5), автора темы и количества сообщений (в котором нет необходимости), автора и даты последнего сообщения (которое необходимо ) но не название темы, которая нужна
SELECT b.boardname, count( DISTINCT t.topicname ) AS topics, count( lm.message ) AS message, t.author as tauthor,
(select count(message) from messages m where m.topicid = t.topicid) AS messagecount,
lm.author as lauthor, lm.date
FROM topics t
INNER JOIN messages lm
ON lm.topicid = t.topicid AND lm.date = (SELECT max(m2.date) from messages m2)
INNER JOIN boards b
ON b.boardid = t.boardid
GROUP BY t.topicname
Это мой оригинальный запрос, который делает то, что я хотел, но получаю первое сообщение, а не последнее
SELECT b.boardid, b.boardname, count( DISTINCT t.topicname ) AS topics, count( m.message ) AS message, m.author AS author, m.date AS date, t.topicname AS topic
FROM boards b
INNER JOIN topics t ON t.boardid = b.boardid
INNER JOIN messages m ON t.topicid = m.topicid
INNER JOIN (
SELECT topicid, MAX( date ) AS maxdate
FROM messages
GROUP BY topicid
) test ON test.topicid = t.topicid
GROUP BY boardname
ORDER BY boardname
любая помощь с этим очень ценится