У меня есть две таблицы, расписание и lesson_booking они связаны через schedule_id .
расписание представляет расписаниезаписи для данного дня (понедельник, вторник и т. д.), которые можно выбрать и использовать для бронирования для клиента в lesson_booking
Что я хотел бы сделать, это получить список расписание записей, с которыми не связано ни одного бронирования (т.е. найти пустые слоты timtables)
Я могу сделать это, но моя проблема в том, чтобы сделать это на определенную дату.У меня возникли некоторые проблемы с этим, поскольку дата указана в таблице lesson_booking , а запрашиваемые записи не имеют ссылки на lesson_booking
Вот что у меня такдалеко: следующее вернет все пустые записи расписания.Я хочу сделать это только на указанную дату.
У меня такое ощущение, что мне нужно изменить левое соединение, но я не уверен, как.
SELECT
lesson_booking.booking_date,
employee.employee_firstname, employee_lastname,
TIME_FORMAT(start_time, '%l:%i %p') AS start_time,
TIME_FORMAT(end_time, '%l:%i %p') AS end_time,
lesson_type.lesson_type_name
FROM timetable
LEFT JOIN lesson_booking ON lesson_booking.timetable_id = timetable.timetable_id
JOIN employee ON timetable.employee_id = employee.employee_id
JOIN lesson_type ON timetable.lesson_type_id = lesson_type.lesson_type_id
JOIN day_name ON day_name.day_name_id = timetable.day_name_id
WHERE ISNULL(lesson_booking_id)
AND
day_name = DATE_FORMAT('2010-7-5', '%W')
ПРИМЕЧАНИЕ: есть и другиетаблицы, связанные с сотрудником, типом урока и т. д. Кроме того, имя_дня является таблицей для дней, т. е. понедельника, вторника, среды и т. д. В предложении where предусмотрено отображение только timteable записей указанного дня.* Любая помощь очень ценится.
Спасибо.
ОБНОВЛЕНИЕ:
Примечание. Вот два запроса.Первая содержит всю информацию, которую я хочу, но некоторую дополнительную. Вторая содержит информацию, которую я хочу исключить из первой.Как мне объединить эти два, чтобы получить только те данные, которые я хочу?Спасибо.
SELECT
timetable.*
FROM
timetable
JOIN day_name ON day_name.day_name_id = timetable.day_name_id
WHERE
day_name = DATE_FORMAT('2010-7-5', '%W');
-- exclude the following result from the above result.
SELECT
timetable.*
FROM
lesson_booking
JOIN timetable ON timetable.timetable_id = lesson_booking.timetable_id
WHERE
booking_date = '2010-07-05';
определения для урока по бронированию и расписания
/*
SQLyog Community- MySQL GUI v8.22
MySQL - 5.1.30-community-log
*********************************************************************
*/
/*!40101 SET NAMES utf8 */;
create table `COLUMNS` (
`Field` varchar (192),
`Type` blob ,
`Null` varchar (9),
`Key` varchar (9),
`Default` blob ,
`Extra` varchar (81)
);
insert into `COLUMNS` (`Field`, `Type`, `Null`, `Key`, `Default`, `Extra`) values('lesson_booking_id','int(11)','NO','PRI',NULL,'auto_increment');
insert into `COLUMNS` (`Field`, `Type`, `Null`, `Key`, `Default`, `Extra`) values('client_id','int(11)','NO','MUL',NULL,'');
insert into `COLUMNS` (`Field`, `Type`, `Null`, `Key`, `Default`, `Extra`) values('timetable_id','int(11)','NO','MUL',NULL,'');
insert into `COLUMNS` (`Field`, `Type`, `Null`, `Key`, `Default`, `Extra`) values('horse_owned_id','int(11)','NO','MUL',NULL,'');
insert into `COLUMNS` (`Field`, `Type`, `Null`, `Key`, `Default`, `Extra`) values('transaction_id','int(11)','YES','MUL',NULL,'');
insert into `COLUMNS` (`Field`, `Type`, `Null`, `Key`, `Default`, `Extra`) values('booking_date','date','NO','',NULL,'');
insert into `COLUMNS` (`Field`, `Type`, `Null`, `Key`, `Default`, `Extra`) values('cancelled_status','int(11)','YES','MUL',NULL,'');
insert into `COLUMNS` (`Field`, `Type`, `Null`, `Key`, `Default`, `Extra`) values('no_show','tinyint(1)','NO','','0','');
insert into `COLUMNS` (`Field`, `Type`, `Null`, `Key`, `Default`, `Extra`) values('same_time_next_week_booking_id','int(11)','YES','MUL',NULL,'');
/*
SQLyog Community- MySQL GUI v8.22
MySQL - 5.1.30-community-log
*********************************************************************
*/
/*!40101 SET NAMES utf8 */;
create table `COLUMNS` (
`Field` varchar (192),
`Type` blob ,
`Null` varchar (9),
`Key` varchar (9),
`Default` blob ,
`Extra` varchar (81)
);
insert into `COLUMNS` (`Field`, `Type`, `Null`, `Key`, `Default`, `Extra`) values('timetable_id','int(11)','NO','PRI',NULL,'auto_increment');
insert into `COLUMNS` (`Field`, `Type`, `Null`, `Key`, `Default`, `Extra`) values('day_name_id','int(11)','NO','MUL',NULL,'');
insert into `COLUMNS` (`Field`, `Type`, `Null`, `Key`, `Default`, `Extra`) values('start_time','time','NO','',NULL,'');
insert into `COLUMNS` (`Field`, `Type`, `Null`, `Key`, `Default`, `Extra`) values('end_time','time','NO','',NULL,'');
insert into `COLUMNS` (`Field`, `Type`, `Null`, `Key`, `Default`, `Extra`) values('lesson_type_id','int(11)','NO','MUL',NULL,'');
insert into `COLUMNS` (`Field`, `Type`, `Null`, `Key`, `Default`, `Extra`) values('employee_id','int(11)','NO','MUL','0','');
insert into `COLUMNS` (`Field`, `Type`, `Null`, `Key`, `Default`, `Extra`) values('timetable_active_status','tinyint(1)','NO','','1','');