1. В БД MySQL есть 2 таблицы (фотографии и комментарии к ним):
CREATE TABLE `photos` (
`photo_id` int(11) NOT NULL,
`photo_title` tinytext NOT NULL,
PRIMARY KEY (`photo_id`)
) ENGINE=InnoDB DEFAULT CHARSET=cp1251;
CREATE TABLE `comments` (
`comment_id` int(11) NOT NULL AUTO_INCREMENT,
`photo_id` int(11) unsigned NOT NULL,
`user_id` int(11) unsigned NOT NULL,
`comment_text` text NOT NULL,
PRIMARY KEY (`comment_id`)
) ENGINE=InnoDB DEFAULT CHARSET=cp1251;
Напишите SQL-запрос, который выведет список фотографий, с указанием количества комментариев, отсортированные в порядке убывания их количества, у которых меньше 5 пользователей-комментаторов.
Мой ответ:
Код:
SELECT photos.photo_id, count(comments.photo_id) as comments_count
FROM photos
JOIN comments ON photos.photo_id=comments.photo_id
GROUP BY photos.photo_id
HAVING COUNT(DISTINCT comments.user_id)<5
ORDER BY comments_count DESC