@Alk90
php, mysql, jquery, css, html, api

Как выбрать определенное количество записей для каждого ID?

Всем привет!
Я пытаюсь получить получить вложенные изображения для каждой новости, но только по одному.
Первым делом я делаю запрос для получения новостей:
$db->query("SELECT `id`, `title`, `text` FROM `news` LIMIT 10");

В итоге я получаю 10 новостей? Создаю из них коллекцию и беру `id` каждой новости чтобы далее получить Изображения для каждой новости. И делаю следующий запрос в базу.
$db->query("SELECT `id`, `basename` FROM `images` WHERE `type_post` = 'news' AND `post_id` IN ({$ids})");
// $ids - это ID новостей через запятую

Я получаю все как надо и все работает. Но на стороне php мне все равно приходится обрезать все полученные массивы изображений до 1 элемента. т.к. мне нужна только 1 картинка в ленте. Получается что можно как-то ускорить запрос картинок за счет введения некого LIMIT, но для каждой новости.
Вот прошу помощи ибо как должен выглядеть этот запрос, не могу придумать.
  • Вопрос задан
  • 45 просмотров
Пригласить эксперта
Ответы на вопрос 2
Compolomus
@Compolomus
Комполом-быдлокодер
select news.id as nid , title, text, images.basename, images.post_id from news join images on nid = images.post_id limit 10
Исправил
Как то так
Ответ написан
@Vitsliputsli
WITH news_images AS (
    SELECT news.id news_id, min(images.id) images_id FROM news
        LEFT JOIN images ON news.id=images.id
        GROUP BY news.id
        LIMIT 10
)
SELECT news.*,images.* 
    FROM news_images
    JOIN news ON news.id=news_images.news_id
    JOIN images ON images.id=news_images.images_id
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы