Jörg: mysql: Left Join an dieser Stelle?

Beitrag lesen

Hallo Rolf,

Hm. So langsam beginne ich, den Überblick zu verlieren - bzw. ich habe ihn offenbar noch nie gehabt. Denn mir fällt jetzt ein möglicher Defekt auf.

Da ist definitiv noch etwas nicht so, wie gewünscht. Denn der LEFT JOIN zur sonder-Tabelle gibt mir teilweise noch nicht die korrekte Kategorie aus.

Du hast die Datümer in alledaten.

Ja.
ID(int,autoincremnt)
Datum(date)
Wochentag(varchar)

Da mischst Du mit LEFT JOIN Sätze hinzu, die zu einem bestimmten User gehören. Aus der Stunden-Tabelle die vom Datum, aus der Sonder-Tabelle die, deren Datumsintervall das Datum einschließt.

Genau.

Heißt doch eigentlich: Zwischen Stunden und Sonder gibt es überhaupt keinen Bezug - außer der User-ID. Aber das könnte zu wenig sein.

User-ID und ggf. Datum, wenn es zwischen Start und End liegt.

Wenn man deine Daten nicht kennt, ist es ja so, dass Du zu einem Datum x Sätze in der Stundentabelle und y Sätze in der Sondertabelle finden kannst. x und y sind Zahlen von 0 bis N. In dem Moment, wo x>1 UND y>1 wird, bekommst Du alle möglichen Kombinationen dieser Sätze geliefert.

Ok. Deshalb an dieser Stelle:
X kann 0, 1 oder n sein.
Y kann auch 0,1 oder n sein.

Fall 1: Das ist okay so und deine Auswertung kommt damit klar.

Wenn die Ergebnismenge aus meiner Abfrage stimmen würde, würde meine Auswertung damit klar kommen (müssen).

Ich hadere also doch immer noch mir meiner Query.

Edit an dieser Stelle (manchmal hilft das Schreiben eines Post bei der Lösung - hier wieder geschehen):

Ich habe den LEFTJOIN der Sondertabelle wieder falsch gemacht, auch dort muss ich auf den User dieser Tabelle Bezug nehmen!!

Also:

SELECT
    s.Kategorie,
    a.Datum
FROM
    alletage a
LEFT JOIN stunden STD ON
    (
        a.Datum = STD.Datum AND s.User = 'xyz'
    )
LEFT JOIN _436sdw_zz_sonder s ON
    (
       a.Datum BETWEEN s.Start AND s.End AND STD.User = 'xyz'
    )
WHERE
    a.Datum BETWEEN '2021-04-01' AND '2021-04-30'
ORDER BY
    `a`.`Datum` ASC

Das scheint mir von der Abfrage her das gewünschte Ergebnis zu bringen.

....

Habs gerade nochmal in den Echtdaten ausprobiert, die Ergebnismenge sieht sehr aus, wie mein gewünschtes Ergebnis ☺️

Siehst du denn noch irgendwo einen möglichen Defekt?

Jörg