I have two mysql tables, schedule and appointment. In schedule table there is defined doctor termins and in other there are booked appointments. The problem is that the doctor can always change his termins and I can’t paste reference in appointments table and I only want to get available termins in one mysql query for both doctors. Is that posible?
CREATE TABLE `schedule` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`from` timestamp NULL DEFAULT NULL,
`to` timestamp NULL DEFAULT NULL,
`doctor_id` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=latin1;
INSERT INTO `schedule` (`id`, `from`, `to`, `doctor_id`)
VALUES
(1, '2012-09-06 14:00:00', '2012-09-06 14:59:59', 1),
(2, '2012-09-06 15:00:00', '2012-09-06 15:59:59', 1),
(3, '2012-09-06 16:00:00', '2012-09-06 16:59:59', 1),
(4, '2012-09-06 17:00:00', '2012-09-06 17:59:59', 1),
(5, '2012-09-06 14:00:00', '2012-09-06 14:59:59', 2),
(6, '2012-09-06 15:00:00', '2012-09-06 15:59:59', 2),
(7, '2012-09-06 16:00:00', '2012-09-06 16:59:59', 2),
(8, '2012-09-06 17:00:00', '2012-09-06 17:59:59', 2);
CREATE TABLE `appointments` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`from` timestamp NULL DEFAULT NULL,
`to` timestamp NULL DEFAULT NULL,
`doctor_id` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=latin1;
INSERT INTO `appointments` (`id`, `from`, `to`, `doctor_id`)
VALUES
(3, '2012-09-06 16:00:00', '2012-09-06 16:59:59', 1),
(4, '2012-09-06 17:00:00', '2012-09-06 17:59:59', 1),
(5, '2012-09-06 14:00:00', '2012-09-06 14:59:59', 2),
(8, '2012-09-06 17:00:00', '2012-09-06 17:59:59', 2);
If it is guaranteed that appointments id will equal schedule id then:
Sqlfiddle
If appointments id is not guaranteed to be linked then:
Sqlfiddle