newpdv
@newpdv
Web-devekioer

Логическая ошибка объединения таблиц

Добрый день!

Есть две таблицы:

objects
id | title | active | rating

comments
id | obj_id | text

Нужно извлечь все объекты и количество комментариев к каждому.

Формирую запрос:
SELECT `objects`.*, count(comments.obj_id) AS `comments`
FROM `objects`
LEFT JOIN `comments` ON objects.id = comments.obj_id 
WHERE objects.active = 1 
GROUP BY `comments`.`obj_id` 
ORDER BY `objects`.`rating` DESC 
LIMIT 1000

Но возвращаются не все записи. Возвращает 16 строк

А запрос:
SELECT `objects`.* AS `comments`
FROM `objects`
WHERE objects.active = 1 
ORDER BY `objects`.`rating` DESC 
LIMIT 1000

27 строк

В чем здесь моя ошибка?
  • Вопрос задан
  • 2728 просмотров
Решения вопроса 1
Methos
@Methos
нужно GROUP BY `objects`.`id`
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
nazarpc
@nazarpc
Open Source enthusiast
А если решить прямо?:
SELECT `objects`.*, COUNT(SELECT `id` FROM `comments` WHERE `objects`.`id` = `comments`.`obj_id`) AS `comments`
FROM `objects`
WHERE `objects`.`active` = 1 
ORDER BY `objects`.`rating` DESC 
LIMIT 1000
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы