SQL Abfrage Datum wird in Abfrage falsch angezeigt
Hallo Community,
ich hab da mal ein Frage zu SQL abfragen. Ich wollte mir eine Abrage über mehrer Tabellen aus unserer Datenbank ziehen leider komme ich nicht weiter.
Durch Verknüpfung mit Inner join verbinde ich die Tabellen und durch where mache ich die Ausschlusskriterien.
Jetzt bekomme ich eine Liste angezeigt bei der auch ein Datum mit angezeigt wird. in der Datenbank ist das immer unterschiedlich. Wenn ich aber die Abfrage ausführe
zeigt er mir das Datum bei allen Zeilen im Ergebnis als identisch an.
Das Datum habe ich mit DATEDIFF (DAY,Feld aus der DB, GETDATE()) <= 20
Durch das Datum sollte nur ein Datensatz übrig bleiben aber irgendwie geht das nicht.
Vielen Dank
ich hab da mal ein Frage zu SQL abfragen. Ich wollte mir eine Abrage über mehrer Tabellen aus unserer Datenbank ziehen leider komme ich nicht weiter.
Durch Verknüpfung mit Inner join verbinde ich die Tabellen und durch where mache ich die Ausschlusskriterien.
Jetzt bekomme ich eine Liste angezeigt bei der auch ein Datum mit angezeigt wird. in der Datenbank ist das immer unterschiedlich. Wenn ich aber die Abfrage ausführe
zeigt er mir das Datum bei allen Zeilen im Ergebnis als identisch an.
Das Datum habe ich mit DATEDIFF (DAY,Feld aus der DB, GETDATE()) <= 20
Durch das Datum sollte nur ein Datensatz übrig bleiben aber irgendwie geht das nicht.
Vielen Dank
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 518970
Url: https://administrator.de/contentid/518970
Ausgedruckt am: 20.11.2024 um 02:11 Uhr
5 Kommentare
Neuester Kommentar
Hallo BlueEyePhoenix,
da wäre jetzt mal die ganze Abfrage interessant. Deinem "DATEDIFF (..." entnehme ich schonmal, daß es sich um einen SQL Server handelt.
Das Datum ist wahrscheinlich deswegen überall gleich, weil Du tatsächlich diesen einen richtigen Datensatz rausfindest, ihn aber dann durch einen Fehler wieder vervielfältigst. Das kann passieren über OR und AND in einer Bedingung, die dann nicht richtig geklammert sind oder einfach nur ein unbedachtes OR oder durch ein falsches/schlechtes JOIN.
Deswegen wäre die ganze Abfrage interessant.
Gruß, Mad Max
da wäre jetzt mal die ganze Abfrage interessant. Deinem "DATEDIFF (..." entnehme ich schonmal, daß es sich um einen SQL Server handelt.
Das Datum ist wahrscheinlich deswegen überall gleich, weil Du tatsächlich diesen einen richtigen Datensatz rausfindest, ihn aber dann durch einen Fehler wieder vervielfältigst. Das kann passieren über OR und AND in einer Bedingung, die dann nicht richtig geklammert sind oder einfach nur ein unbedachtes OR oder durch ein falsches/schlechtes JOIN.
Deswegen wäre die ganze Abfrage interessant.
Gruß, Mad Max
Hallo BlueEyePhoenix,
irgendwelche OR, die die Datensätze vervielfachen, kann man wohl ausschließen. zumindest in dieser Abfrage. Was innerhalb der Sichten (ich nehme mal an "v" am Anfang steht für view und "t" für table) passiert, weiß ich nicht.
Dann also auf zur Fehlersuche:
Wenn ich mir die Abfrage so ansehe, dann fällt mein erster Verdacht für die Vervielfältigung auf vArtikelZustandMitStandardZustand. Was sind denn die ganzen kArtikel?
tRMRetourePos.kArtikel = vArtikelZustandMitStandardZustand.kHauptartikel
vArtikelZustandMitStandardZustand.kZustandArtikel = tartikel.kArtikel = vWarenlagerPlatzArtikel.kArtikel
Welche dieser joins sind denn keine 1:1 Verknüpfungen?
Geh mal join für join vor, also erstmal nur TRMRetourepos und tRMRetoure:
Dann vArtikelZustandMitStandardZustand mit dazunehmen und prüfen, ob es mehr oder weniger Datensätze werden.
Dann tartikel dazunehmen und prüfen.
Dann die Einschränkung auf die tartikel.cArtNr.
Und so dann noch die letzten beiden Sichten dazunehmen und immer prüfen, ob die Ausgabe richtig ist bis dahin. Wenn das Wareneingangsarchiv dazukommt, kann ich mir vorstellen, daß mehr Datensätze rauskommen, aber sind das dann alles die richtigen?
Ich hoffe mal, ich konnte Dir weiterhelfen. Ist natürlich ein bischen im Trüben gefischt. Um es genauer hinzubekommen müßte ich wissen, was in den Sichten steht, was die einzelnen Spalten bedeuten (wie oben schon geschrieben, die ganzen kArtikel sind mir ein Rätsel) und wie die Tabellen verknüpft sind. Das willst Du aber kaum hier alles reinschreiben
Gruß, Mad Max
irgendwelche OR, die die Datensätze vervielfachen, kann man wohl ausschließen. zumindest in dieser Abfrage. Was innerhalb der Sichten (ich nehme mal an "v" am Anfang steht für view und "t" für table) passiert, weiß ich nicht.
Dann also auf zur Fehlersuche:
Wenn ich mir die Abfrage so ansehe, dann fällt mein erster Verdacht für die Vervielfältigung auf vArtikelZustandMitStandardZustand. Was sind denn die ganzen kArtikel?
tRMRetourePos.kArtikel = vArtikelZustandMitStandardZustand.kHauptartikel
vArtikelZustandMitStandardZustand.kZustandArtikel = tartikel.kArtikel = vWarenlagerPlatzArtikel.kArtikel
Welche dieser joins sind denn keine 1:1 Verknüpfungen?
Geh mal join für join vor, also erstmal nur TRMRetourepos und tRMRetoure:
select tRMRetourePos.kRMRetoure,
tRMRetourePos.kArtikel
from TRMRetourepos
inner Join tRMRetoure on tRMRetourePos.kRMRetoure = tRMRetoure.kRMRetoure
Dann vArtikelZustandMitStandardZustand mit dazunehmen und prüfen, ob es mehr oder weniger Datensätze werden.
Dann tartikel dazunehmen und prüfen.
Dann die Einschränkung auf die tartikel.cArtNr.
Und so dann noch die letzten beiden Sichten dazunehmen und immer prüfen, ob die Ausgabe richtig ist bis dahin. Wenn das Wareneingangsarchiv dazukommt, kann ich mir vorstellen, daß mehr Datensätze rauskommen, aber sind das dann alles die richtigen?
Ich hoffe mal, ich konnte Dir weiterhelfen. Ist natürlich ein bischen im Trüben gefischt. Um es genauer hinzubekommen müßte ich wissen, was in den Sichten steht, was die einzelnen Spalten bedeuten (wie oben schon geschrieben, die ganzen kArtikel sind mir ein Rätsel) und wie die Tabellen verknüpft sind. Das willst Du aber kaum hier alles reinschreiben
Gruß, Mad Max
Ohne die Daten zu kennen und den Zusammenhang zu verstehen kann man nur raten. Die Vervielfältigung ist vermutlich ein Resultat aus dem Join bzw. aus einer fehlenden Join Kondition. Ich vermute mal da nach vWareneingangsarchiv noch eine weitere Tabelle gejoint wird werden hier die Daten vervielfältigt, lass den letzten Join mal weg und guck ob dein Datum noch mehrfach vorkommt.