|
|
|
| Делаю такой запрос:
SELECT *
FROM bb_topics, bb_posts
WHERE topics.topic_id = posts.topic_id
ORDER BY 'post_time' DESC
LIMIT 0 , 5
|
Он выводит последние 5 тем в которых недавно отписались.
Проблема в том что значения topic_id не редко повторяются.
Например последние 2 поста - в одной теме, тогда выводится 5 тем из которых 2 - одинаквые.
Как добавить условие чтобы избежать повторения topic_id
Зарание спасибо. | |
|
|
|
|
|
|
|
для: Yakor
(20.05.2006 в 17:01)
| | Вот структура таблиц:
CREATE TABLE 'topics' (
'topic_id' mediumint(8) unsigned NOT NULL auto_increment,
'forum_id' smallint(8) unsigned NOT NULL default '0',
'topic_title' char(60) NOT NULL default '',
'topic_poster' mediumint(8) NOT NULL default '0',
'topic_time' int(11) NOT NULL default '0',
'topic_first_post_id' mediumint(8) unsigned NOT NULL default '0',
'topic_last_post_id' mediumint(8) unsigned NOT NULL default '0',
'topic_moved_id' mediumint(8) unsigned NOT NULL default '0',
PRIMARY KEY ('topic_id'),
KEY 'forum_id' ('forum_id'),
KEY 'topic_moved_id' ('topic_moved_id'),
KEY 'topic_status' ('topic_status'),
KEY 'topic_type' ('topic_type')
);
|
CREATE TABLE 'posts' (
'post_id' mediumint(8) unsigned NOT NULL auto_increment,
'topic_id' mediumint(8) unsigned NOT NULL default '0',
'forum_id' smallint(5) unsigned NOT NULL default '0',
'poster_id' mediumint(8) NOT NULL default '0',
'post_time' int(11) NOT NULL default '0',
'post_username' varchar(25) default NULL,
PRIMARY KEY ('post_id'),
KEY 'forum_id' ('forum_id'),
KEY 'topic_id' ('topic_id'),
KEY 'poster_id' ('poster_id'),
KEY 'post_time' ('post_time')
);
|
| |
|
|
|
|
|
|
|
для: Yakor
(20.05.2006 в 17:01)
| | Сгруппируйте результат при помощи конструкции GROUP BY по полю topics.topic_id
SELECT *
FROM bb_topics, bb_posts
WHERE topics.topic_id = posts.topic_id
ORDER BY post_time DESC
GROUP BY topics.topic_id
LIMIT 0 , 5
|
| |
|
|
|
|
|
|
|
для: cheops
(20.05.2006 в 17:43)
| | Спасибо огромное! Каждый раз удивляюсь на сколько велики возможности sql :)
Только мне пишет ошибку
SELECT *
FROM bb_topics, bb_posts
WHERE bb_topics.topic_id = bb_posts.topic_id
ORDER BY bb_posts.post_time DESC
GROUP BY bb_topics.topic_id
LIMIT 0 , 5
Check the manual that corresponds to your MySQL server version for the right syntax to use near 'GROUP BY bb_topics.topic_id
LIMIT 0 , 5' at line 5
|
| |
|
|
|
|
|
|
|
для: Yakor
(20.05.2006 в 18:37)
| | Cheops спасибо огромное!
а ошибка оказалоси из-за того что надо вначале груп, у уж потом ордер. | |
|
|
|