У меня есть таблица киоскеSQL запросы: выборка записей и проверка сумма в объединенной таблице
CREATE TABLE IF NOT EXISTS `kiosk` (
`id` varchar(40) NOT NULL,
`netId` varchar(40) NOT NULL,
`name` varchar(255) NOT NULL,
`countryId` varchar(40) NOT NULL,
`cityId` varchar(40) NOT NULL,
`address` varchar(255) NOT NULL,
`lat` varchar(50) NOT NULL,
`long` varchar(50) NOT NULL,
`venue` varchar(255) NOT NULL,
`impressions` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
и настольного РАЗМЕЩЕНИЕ
CREATE TABLE IF NOT EXISTS `placement` (
`id` varchar(40) NOT NULL,
`userId` varchar(40) NOT NULL,
`adId` varchar(40) NOT NULL,
`duration` int(11) NOT NULL,
`kioskId` varchar(40) NOT NULL,
`zoneId` varchar(40) NOT NULL,
`dateBegin` int(11) NOT NULL,
`dateEnd` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
Размещение означает издательство объявления на киоске. Каждое место размещения имеет продолжительность и даты начала и окончания публикации. Разрешено составлять 240-секундный блок различных объявлений на одном киоске, этот блок будет поворачиваться снова и снова в течение дня.
Теперь мне нужно выбрать киоск из определенного города, который имеет достаточно времени в блоке, чтобы добавить рекламу там.
Как я вижу, мне нужно выбрать киоски и суммировать длительности мест размещения, уже добавленных в эти киоски, чтобы проверить, могу ли я добавить запись места размещения в таблицу.
Я пытался что-то вроде
SELECT *, SUM(`placement`.`duration`) AS `d`
FROM `kiosk`
LEFT OUTER JOIN `placement` ON ((`cityId` = 'bac3d991-d13c-49c2-8563-8f974c75f6b9')
AND (`placement`.`kioskId` = `kiosk`.`id`)
AND ((`placement`.`dateBegin` BETWEEN 1333929600 AND 1333929600))
OR (`placement`.`dateEnd` BETWEEN 1333929600 AND 1333929600)))
GROUP BY `kiosk`.`id`
HAVING `d` <=225
OR `d` IS NULL
Здесь 225 количества возможных используемых секунд в блоке (я хочу, чтобы поместить 15 секунд объявления в этом примере), и если нет никакого размещения записей для этого киоска проверить d
для будучи NULL
Кажется, я делаю все неправильно, потому что я получаю список всех киосков, которые не являются собственностью города или ссылок, связанных с ним.
Я был бы благодарен за любую помощь
Это кажется ближе к тому, что мне нужно, но теперь это не retirns ни одной строки. Я думаю, это потому, что в таблице размещения нет соответствующих записей – necrobear