mysql: Left Join an dieser Stelle?
bearbeitet von Rolf BHallo Jörg,
ich hab grad mal angefangen, Testtabellen aufzubauen.
Test 1: Datum und Stunden.
LEFT JOIN ergibt zuerst alle Rows, wo die Stunden-Table nicht null ist. Die null-Rows dahinter.
Der Optimizer hat also offenbar beschlossen, primär über die Stundentabelle zu laufen und die Datumstabelle zuzumischen. Das mag an der Verteilung der Datenzeilen liegen (1000 Zeilen für 3 Jahre und 3 Zeilen in den Stunden). Jedenfalls brauchte ich einen ORDER BY um die Datümer in die richtige Ordnung zu bringen.
Ist das bei Dir vielleicht auch so?
Wenn sie echt fehlen: ich würde so vorgehen wie ich im phpmyadmin (oder was Du verwendest) Schritt für Schritt aufbauen. Erst nur die Datums-Tabelle, dann die Stunden dazu, dann die Sonder-Tabelle.
Eine Frage nebenbei: Wenn Du die Abfrage auf std.User in die ON-Bedingung für tabelle_sonder hängst, dann bekommst Du (*solltest* Du bekommen) die tabelle_stunden-Einträge für alle User und nur die Sonder-Einträge werden auf den genannten User limitiert. Ist das das, was Du willst?
Zuerst die Datu
_Rolf_
--
sumpsi - posui - obstruxi