GROUP By помогает, но!
Он сначала группирует, а после уже результаты сортирует ордером, а нужно на оборот.
Т.е. нужно выдернуть из таблицы строки с наибольшим `createTime`, но так, чтобы у них не пересекались `postId`.
SELECT
COUNT(`comments`.`postId`), `posts`.*
FROM `posts` LEFT JOIN `comments` ON (`comments`.`postId` = `posts`.`postId`)
Данный запрос работает, но проблема в том, то возвращается только одна строка (запись в таблице posts), а необходимо, чтобы выдавались все строки из posts (с количеством комментариев соответственно ).
lemniscate пишет:
select `posts`, count(`comments`.*) from posts left join on post.postIid=comments.postId group by post.postIid
Не работает, ругается на count... (естественно помарки правил)
Спасибо за ответ, но к сожелению не работает:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '*) FROM `posts` , `comments` WHERE `comments`.`postId` = `posts`.`postId` LIMIT' at line 1
Поясню...
У меня функция определяется динамически, т.е. я не знаю что за функция будет использоваться и сколько параметров она ожидает получить.
Как вариант