Задать вопрос

Как ограничить выборку запроса с объединением таблиц по одной таблице на SQL

Есть две таблицы со связью «один к многим»: таблица articles со статьями и comments с соответствующими комментариями. Обычная выборка из них производится следующим образом (выбираются последние статьи и первые комментарии к ним):

SELECT
  articles.title,
  articles.date,
  comments.author,
  comments.text
FROM
  articles
  INNER JOIN comments ON comments.article = articles.id
ORDER BY
  articles.id DESC,
  comments.id ASC


Как оформить запрос так, чтобы:
  1. Выбиралось только нужное число статей (например, 10) со всеми комментариями?
  2. К каждой статье выбиралось ограниченное число комментариев?
  3. Выбиралось ограниченное число статей и ограниченное число комментариев к ним?


Не знаю, возможно ли сделать это одним запросом, но может быть… Буду очень признателен за помощь.
  • Вопрос задан
  • 3749 просмотров
Подписаться 3 Оценить 2 комментария
Решение пользователя kazmiruk К ответам на вопрос (3)
@kazmiruk
1. Вместо обычно джойна делаем немного необычный:
SELECT *
FROM comments as c
INNER JOIN (SELECT * FROM articles LIMIT 10) as a
ON a.id = c.aticle_id
2. Одним запросом никак.
3. Одним запросом никак.

2 и 3 делается обычным селектом статей с limit или без, а затем выборкой комментариев для каждой статьи с лимитом или без.
Ответ написан