Einzelnen Beitrag anzeigen

Benutzerbild von Valle
Valle

Registriert seit: 26. Dez 2005
Ort: Karlsruhe
1.223 Beiträge
 
#3

AW: 3-fache Zeitüberschneidung

  Alt 2. Sep 2013, 16:28
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
Valentin Voigt
BOFH excuse #423: „It's not RFC-822 compliant.“
Mein total langweiliger Blog

Geändert von Valle ( 2. Sep 2013 um 16:33 Uhr)
  Mit Zitat antworten Zitat