Hi,
ich hab das jetzt nicht getestet, weil das Anlegen der Demodaten mir zu lange dauern würde, aber kannst du das nicht einfach so machen?
Code:
SELECT * FROM a
WHERE EXISTS(SELECT id FROM b WHERE b.start BETWEEN a.start AND a.end)
OR EXISTS(SELECT id FROM c WHERE c.start BETWEEN a.start AND a.end)
Wenn du das per-Mitarbeiter machen willst, kannst du die beiden Subqueries sicherlich um ein "AND a.mitarbeiterID = b|c.mitarbeiterID" erweitern.
Interessant wäre noch, wie groß die Tabelle so ist oder werden kann. Es gibt sicherlich noch performantere Lösungen, die ohne 2 Subqueries auskommen.
Was deine vielen IFs da machen versteh ich auch nicht so recht.
Edit:// Weitere Möglichkeit, ohne Subquery, daher vermutlich schneller:
Code:
SELECT a.* FROM a, b, c
WHERE b.start BETWEEN a.start AND a.end
OR c.start BETWEEN a.start AND a.end
Hab's mit 3 einfachen Tabellen und insgesamt 4 Einträgen auch mal getestet.
Liebe Grüße,
Valentin