Hello,
Es bleibt trotzdem die Frage, wie man einen bedingten Insert aufbaut, damit der nur durchgeführt wird, wenn ein Select() _keinen_ Datensatz geliefert hat.
Nun, du kannst eine COUNT()-Subquery stellen, die schonmal die Information liefert, ob was überlappt oder nicht. Die beïnhaltet alle drei(/vier) erwähnten Bedingungen.
Bekommt man das mit http://dev.mysql.com/doc/refman/5.1/de/insert-select.html hin?
INSERT INTO table SELECT * FROM (SELECT anfang, ende, sonstige Daten) dummyAlias WHERE (count-Subquery) = 0
Ich krieg es nicht hin. Vielleicht hat ja jemand anders eine gut Idee..
Zur Vereinfachung habe ich eine Tabelle zahl
benutzt mit den Spalten id
und nummer
, in die ich eine neue Nummer eintragen will, wenn sie noch nicht vorhanden ist. Selbstverständlich hier NICHT mit einem Unique Index, da der ja für den anderen Anwendungsfall nicht nutzbar wäre.
Das zählen, wie oft die Nummer vorhanden ist, ist kein Problem.
Aber wie gestaltet man das Insert, wenn eben _kein_ Datensatz in den Filterbereich fällt, also count(*) = 0 ist.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg