dedlfix: Vernünftiger Aufbau/Abfragen für einen Belegungsplaner

Beitrag lesen

Hi!

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..
Aber wie gestaltet man das Insert, wenn eben _kein_ Datensatz in den Filterbereich fällt, also count(*) = 0 ist.

Wenn COUNT(*) = 0 zutrifft, dann ist die Bedingung erfüllt und das Subselect im FROM liefert seine Daten, die den neu einzufügenden Datensatz darstellen, an das INSERT. Wenn COUNT(*) = 0 nicht passt, gibt das außere SELECT eine leere Menge zurück => es wird nichts eingefügt.

INSERT INTO zahl SELECT * FROM (SELECT null, 42) dummyAlias WHERE (SELECT COUNT(*) FROM zahl WHERE nummer = 42) = 0

Man kann es auch ausführlicher schreiben, damit die Gemengelage der beiden ersten SELECTS klarer wird:

INSERT INTO zahl (id, nummer)
    SELECT id, nummer
    FROM
      (SELECT null AS id, 42 AS nummer) AS dummyAlias
    WHERE
      (SELECT COUNT(*) FROM zahl WHERE nummer = 42) = 0

Lo!