Hallo Jörg,
um - keine Ahnung. Du hast LISP-SQL geschrieben (LISP: Die Programmiersprache mit mehr Klammern als Code), aber wenn ich das in einen Editor kopiere und durch Einrückungen gliedere, sieht es nicht falsch aus.
Was vermutlich kein Problem ist, ist der Umstand, dass Du im MAX-Select mit m.MaschinenID vergleichst, obwohl sich der Subselect auf die dg Tabelle bezieht. Während der Auswertung eines konkreten Subselect sollten diese beiden Werte identisch sein, deswegen meine ich, dass es unproblematisch ist.
Vorschlag zur Fehlereingrenzung:
Such Dir eine Maschinen-ID, für die Du Ergebnisse erwartest. Sagen wir mal, das wäre die 4711.
Schau Dir an, was
SELECT MAX(Erstelldatum)
FROM dgdgdg
WHERE MaschinenID = 4711
AND dg.del = 0
liefert. Muss ja irgendein Datum sein, sowas wie 'xx.yy.20zz'
Setze dieses Datum händisch in deine Query, an Stelle des Subselect
SELECT
m.Bla
FROM
maschinen m
LEFT JOIN
dgdgdg dg ON m.MaschinenID = dg.MaschinenID
AND dg.Erstelldatum = 'xx.yy.20zz'
AND dg.del = 0
WHERE
m.MaschinenID IN (4711)
AND m.MaschinenDel != 1
ORDER BY
dg.ID ASC
Und dann mal weiter 'rantasten. Ohne deine DB kann ich das jetzt auch nicht näher erklären. Es kann auch an dem Teil der Query liegen, den Du aus Gründen von Betriebsgeheimnissen nicht zeigst.
Wenn Du nachher den Subselect wieder einsetzt: Ersetze nur 'xx.yy.20zz' durch (SELECT MAX(...) WHERE ...) - mehr Klammern braucht es nicht.
Rolf
sumpsi - posui - obstruxi