schau mal,ob es nun geht.
Das (der?) Subselect selektiert alle Termine, die später liegen, als der selektierte Termin. Dadurch kommt immer nur ein Satz als Ergebnis raus.
Das Problem ist, dass wenn man der Selektionsbedingung AND tab2.begin <= tab1.end
hinzufügt, nur "direkte" Überlappungen berücksichtigt werden, aber nicht z.B. drei direkt hintereinanderliegende Termine (oder Termine, die sich "an den Rändern" überschneiden, die aber nicht alle "in den ersten Termin hineinragen").
wenn nicht, muss ich mir mal doch eine beispieldatenbank machen und ein wenig "rumfummeln".
Hier wäre der entprechende CREATE und INSERTs. Ich habe mal auf DATETIME-Spalten umgestellt, das vereinfacht vielleicht später komplexere WHERE-Bedingungen.
CREATE TABLE `termine` (
`id` int(10) unsigned NOT NULL auto_increment,
`begin` datetime NOT NULL default '0000-00-00 00:00:00',
`end` datetime NOT NULL default '0000-00-00 00:00:00',
PRIMARY KEY (`id`)
);
INSERT INTO `termine` (`begin`, `end`) VALUES ('2006-05-30 08:40:00', '2006-05-30 08:50:00');
INSERT INTO `termine` (`begin`, `end`) VALUES ('2006-05-30 08:50:00', '2006-05-30 09:05:00');
INSERT INTO `termine` (`begin`, `end`) VALUES ('2006-05-30 09:00:00', '2006-05-30 09:25:00');
INSERT INTO `termine` (`begin`, `end`) VALUES ('2006-05-30 09:15:00', '2006-05-30 09:35:00');
INSERT INTO `termine` (`begin`, `end`) VALUES ('2006-05-30 09:30:00', '2006-05-30 09:40:00');
INSERT INTO `termine` (`begin`, `end`) VALUES ('2006-05-30 09:45:00', '2006-05-30 10:05:00');
INSERT INTO `termine` (`begin`, `end`) VALUES ('2006-05-30 09:45:00', '2006-05-30 10:10:00');
INSERT INTO `termine` (`begin`, `end`) VALUES ('2006-05-30 10:30:00', '2006-05-30 10:40:00');
INSERT INTO `termine` (`begin`, `end`) VALUES ('2006-05-30 10:40:00', '2006-05-30 10:45:00');
Danke Dir für Deine Mühe,
David