Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Отображение N записей при выборке из двух таблиц 
V
    Опции темы
Kostas_ru
Дата 24.2.2014, 13:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 2.11.2006

Репутация: нет
Всего: нет



Привет!
Возникла такая проблема. Есть 2 таблицы

Таблица post
Код

Таблица
post_id | post_txt
------------------
1       | ...
2       | ...
3       | ...


Таблица comment
Код

comment_id | post_id | comment_txt
----------------------------------
1          | 1       | ...
2          | 1       | ...
3          | 1       | ...
4          | 2       | ...
5          | 2       | ...


Нужно получить все посты вместе с N последними комментами (в обратном порядке). Т.е. примерно, если N == 2, то результат должен быть таким
Код

posts_id | post_txt | comment_id | comment_txt
----------------------------------------------
1        | ...      | 3          | ...
1        | ...      | 2          | ...
2        | ...      | 5          | ...
2        | ...      | 4          | ...

Т.е. выводятся только 2 последних коммента к постам, а не все.

До чего я дошел сам - это
1) первым запросом выбираю все post_id
2) формирую в скрипте запрос типа
Код

SELECT *
  FROM post
  INNER JOIN comment
  USING (post_id)
  WHERE post_id = :placeholder
  ORDER BY comment_id DESC
  LIMIT 2

3) множу этот запос для каждого post_id, заменяю placeholder-ы соответствующими post_id и объединяю, для данного конкретного случая выглядит так:
Код

(SELECT *
   FROM post
   INNER JOIN comment
   USING (post_id)
   WHERE post_id = 1
   ORDER BY comment_id DESC
   LIMIT 2) UNION (SELECT *
                     FROM post
                     INNER JOIN comment
                     USING (post_id)
                     WHERE post_id = 2
                     ORDER BY comment_id DESC
                     LIMIT 2);


Что-то мне подсказывает, что для пары постов такое прокатит, но для сотни уже не айс.
Есть ли какая возможность оптимизировать / универсализировать запрос, чтобы не было 100 селектов для 100 постов?
Заранее спасибо
PM MAIL   Вверх
Akina
Дата 24.2.2014, 13:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 106
Всего: 454





--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Kostas_ru
Дата 24.2.2014, 14:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 2.11.2006

Репутация: нет
Всего: нет



Akina, спасибо
PM MAIL   Вверх
retvizan
Дата 24.2.2014, 17:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 24.2.2014

Репутация: нет
Всего: нет



Не факт, что один запрос с переменными будет быстрее нескольких простых запросов. Внешняя красота бывает обманчива. Посмотрите тему http://sqlinfo.ru/forum/viewtopic.php?id=1742 особенно её окончание.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MySQL | Следующая тема »


 




[ Время генерации скрипта: 0.0542 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.