Русское сообщество fluxbb

Быстрый лёгкий надёжный форумный движок

Вы не вошли.

Объявление

Вы можете внести свой вклад в содержание сайта. Жертвователи попадут в почетную группу "Спонсоры". Поддержать сайт.

#1 2006-12-15 04:14:10

Griffon
Гость

Вопрос по интеграции

Собственно вопрос больше по SQL. Хочу сделать отдельный форум из которого брать новости на сайт.
Каждая тема - новая новость. Текст берется из первого поста темы. Всё остальные посты - коментарии.
Вопрос собственно такой, если я сделаю select таким боком:

SELECT t.id, t.poster, t.subject, t.posted, p.message
FROM `forum_topics` t, `forum_posts` p
WHERE t.forum_id = "Номер форума"
AND t.id = p.topic_id
ORDER BY t.posted

выдаются все сообщения в этих темах. Как можно сделать выборку только первых сообщений в каждой теме?
Пардон за глупый вопрос, но никак не могу придумать sad

#2 2006-12-15 05:21:00

hcs
Гость

Re: Вопрос по интеграции

LIMIT 1

#3 2006-12-15 20:43:02

Griffon
Гость

Re: Вопрос по интеграции

hcs пишет:

LIMIT 1

Он тогда только одну строку возвратит, а нужно одну с каждой темы roll
Просто не хотелось бы делать кучу запросов по одной на новость sad

Редактировался Griffon (2006-12-15 20:44:27)

#4 2006-12-15 21:57:28

Slavik
Гость

Re: Вопрос по интеграции

<?php
require PUN_ROOT.'include/parser.php';
$result = $db->query('SELECT id, poster, subject, posted FROM '.$db->prefix.'topics WHERE forum_id = 2 ORDER BY posted DESC') or error('Unable to fetch forum info', __FILE__, __LINE__, $db->error());
while ($cur_news = $db->fetch_assoc($result)) {
    echo '<h3><strong>&raquo; '.$cur_news['subject'].'</strong></h3><br /><br />';
    $res = $db->query('SELECT message, hide_smilies FROM '.$db->prefix.'posts WHERE topic_id='.$cur_news['id'].' ORDER BY posted LIMIT 0,1') or error('Unable to fetch post info', __FILE__, __LINE__, $db->error());
    $cur_message = $db->fetch_assoc($res);
    echo ''.parse_message($cur_message['message'], $cur_message['hide_smilies']).'<br />';
    echo $lang_index['Posted by'].' <strong>'.$cur_news['poster'].'</strong> '.format_time($cur_news['posted']).' | <a href="forum/viewtopic.php?id='.$cur_news['id'].'">Комментировать</a>';
    echo '<br /><hr /><br />';
    };
?>

forum_id = 2 - форум с новостями

у мну так это работает

Редактировался Slavik (2006-12-15 21:59:37)

#5 2006-12-16 02:30:01

Griffon
Гость

Re: Вопрос по интеграции

Спасибо за код smile
А одним запросом это вообще никак не вытащить? Получается если ты отображаешь 20 новостей на странице - это уже 20+1 запрос к БД. Помоему многовато hmm Или я может что-то не так понимаю?

#6 2006-12-16 18:31:25

Slavik
Гость

Re: Вопрос по интеграции

попробуй вот такой запрос:

SELECT t.id, t.posted, t.subject, p.message
FROM foo_posts AS p
INNER JOIN foo_topics AS t ON p.posted = t.posted
WHERE t.forum_id =2
ORDER BY t.posted
LIMIT 0 , 30

#7 2006-12-16 19:21:16

Griffon
Гость

Re: Вопрос по интеграции

Всё работает smile
Огромное спасибо smile

Подвал доски

Под управлением FluxBB. Хостинг Hostens