Rolf B: mysql: Left Join an dieser Stelle?

Beitrag lesen

Hallo 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? Und Du hast so viele befüllte Datenzeilen, dass die Null-Zeilen außer Sicht sind?

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