Mahlzeit,
Zeitbuchung d, und Kellner d1 hängen mit den Kellnr zusammen. In der Zeitbuchung ist ja drin, ob ein Kellner anwesend ist oder nicht (d.FlOffen) und in der Kellner Tabelle d1 ist dann der d1.brulohn, also der Betrag, den der Kellner pro Stunde kostet.
Das ist mir schon klar. Aber es gibt keine Verbindung zwischen den beiden zusammenhängenden Tabellen d und d1 auf der einen und d2 und d3 auf der anderen Seite ... insofern ist's kein Wunder, wenn bei der Abfrage viel zu viele nicht zusammensammengehörende Daten herauskommen.
Ja, Joins hab ich nicht sooo im Griff und bei nem komplexeren Query lass ich die lieber weg, weil ich dann den Durchblick noch mehr verliere. Wäre aber für Vorschläge immer Dankbar!
Lass es dir aus eigener Erfahrung gesagt sein: INSBESONDERE bei komplexeren Abfragen sind explizite JOINs weitaus einfacher zu durchschauen - hauptsächlich weil sofort klar wird, wie welche Tabellen zusammenhängen und sich in der WHERE-Einschränkung nur noch inhaltliche Dinge befinden.
-----8<-----8<-----8<-----
SELECT [...]
FROM dbo.ZeitBuchung d
JOIN dbo.Kellner d1 ON d.kellnr = d1.Kellnr
JOIN dbo.Bon d2 ON /* ??? */
JOIN dbo.Arti d3 ON d2.artnr = d3.artnr
WHERE d.FlOffen = '-1'
AND (DATEDIFF(hh, d2.BonDat, GETDATE()) <= 1)----->8----->8----->8-----
Spätestens wenn man deine Query so umschreibt, wird klar, was ich meine: es fehlt die Verknüpfung der Tabelle d2 mit dem Rest ...
MfG,
EKKi
Hallo und danke für die schnelle Antwort!
hmm.. ich verstehe immer noch nicht ganz? d2 ist ja mit d3 verbunden? In deinem Query ist es dann einfach bei der Zeile:
JOIN dbo.Arti d3 ON d2.artnr = d3.artnr
gemacht. Oder wie kann ich das verstehen? Muss ich dann einfach nochmals ON d2.artnr = d3.artnr bei der Bon Tabelle anfügen? Wäre mir aber irgendwie nicht logisch.
lg