У меня есть две таблицы InnoDB: «места» и «события».В одном месте может быть много событий, , но событие может быть создано без входа.В этом случае внешний ключ события равен NULL.
Упрощенная структура таблиц выглядит следующим образом:
CREATE TABLE IF NOT EXISTS `events` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(255) COLLATE utf8_bin NOT NULL,
`places_id` int(9) unsigned DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `fk_events_places` (`places_id`),
) ENGINE=InnoDB;
ALTER TABLE `events`
ADD CONSTRAINT `events_ibfk_1` FOREIGN KEY (`places_id`) REFERENCES `places` (`id`) ON DELETE CASCADE ON UPDATE NO ACTION;
CREATE TABLE IF NOT EXISTS `places` (
`id` int(9) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(255) COLLATE utf8_bin NOT NULL,
PRIMARY KEY (`id`),
) ENGINE=InnoDB;
Вопрос в том, как построить запрос, содержащий имя события и имя события.соответствующее место (или нет значения, если не назначено место?) .
Я могу сделать это с двумя запросами, но затем я заметно отделяю события, которым назначено местоиз тех, которые не имеют места.