iNfantry
Новичок
Дело так, есть запрос который вытягивает записи из базы (фильмы + количество сеансов по каждому фильму, это не особо важно, просто обычный лефт джойн двух таблиц с группировкой).
SELECT `id`, `title`, `pic_ext`, `ctime`, COUNT(`film_id`) AS `sessions_count` FROM films LEFT JOIN films_sessions ON (`id`=`film_id`) GROUP BY `id` HAVING (`ctime`>'1369837625' OR `sessions_count`>'0') ORDER BY `sessions_count` DESC, `ctime` DESC
Всё работает прекрасно, но возникла необходимость заранее получить число записей которые должен вернуть этот запрос. Как это ПРАВИЛЬНО сделать с помощью COUNT()? Лично у меня вызывает затруднение в составлении этого запроса наличие HAVING в оригинальном запросе, сам никак не могу допереть.
Таблица с фильмами:
CREATE TABLE `films`(
`id` INT AUTO_INCREMENT NOT NULL PRIMARY KEY,
`title` VARCHAR(100),
`pic_ext` CHAR(3),
`ctime` VARCHAR(15),
) DEFAULT CHARACTER SET \'UTF8\' DEFAULT COLLATE \'utf8_general_ci\'
Таблица с сеансами:
CREATE TABLE `films_sessions`(
`film_id` INT,
`start_date` DATE,
`end_date` DATE,
`sessions` TEXT
)
SELECT `id`, `title`, `pic_ext`, `ctime`, COUNT(`film_id`) AS `sessions_count` FROM films LEFT JOIN films_sessions ON (`id`=`film_id`) GROUP BY `id` HAVING (`ctime`>'1369837625' OR `sessions_count`>'0') ORDER BY `sessions_count` DESC, `ctime` DESC
Всё работает прекрасно, но возникла необходимость заранее получить число записей которые должен вернуть этот запрос. Как это ПРАВИЛЬНО сделать с помощью COUNT()? Лично у меня вызывает затруднение в составлении этого запроса наличие HAVING в оригинальном запросе, сам никак не могу допереть.
Таблица с фильмами:
CREATE TABLE `films`(
`id` INT AUTO_INCREMENT NOT NULL PRIMARY KEY,
`title` VARCHAR(100),
`pic_ext` CHAR(3),
`ctime` VARCHAR(15),
) DEFAULT CHARACTER SET \'UTF8\' DEFAULT COLLATE \'utf8_general_ci\'
Таблица с сеансами:
CREATE TABLE `films_sessions`(
`film_id` INT,
`start_date` DATE,
`end_date` DATE,
`sessions` TEXT
)
Последнее редактирование: