blueeyephoenix
Goto Top

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

Content-ID: 518970

Url: https://administrator.de/contentid/518970

Ausgedruckt am: 20.11.2024 um 02:11 Uhr

MadMax
Lösung MadMax 25.11.2019 um 17:25:51 Uhr
Goto Top
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
BlueEyePhoenix
BlueEyePhoenix 26.11.2019 um 09:00:45 Uhr
Goto Top
Danke schonmal vorab für deine Antwort.
hier die SQL Abfrage
select
tRMRetourePos.kRMRetoure,
tRMRetourePos.kArtikel,
vWareneingangsarchiv.dErstellt,
tartikel.cartNr,
vWarenlagerPlatzArtikel.kWarenLagerPlatz
from TRMRetourepos
inner Join tRMRetoure
on tRMRetourePos.kRMRetoure = tRMRetoure.kRMRetoure
inner join vArtikelZustandMitStandardZustand
on tRMRetourePos.kArtikel = vArtikelZustandMitStandardZustand.kHauptartikel
inner join tartikel
on vArtikelZustandMitStandardZustand.kZustandArtikel = tartikel.kArtikel
inner join vWareneingangsarchiv
on tartikel.cArtNr = vWareneingangsarchiv.cArtikelnummer
inner join vWarenlagerPlatzArtikel
on tartikel.kArtikel = vWarenlagerPlatzArtikel.kArtikel
where vWarenlagerPlatzArtikel.kWarenLagerPlatz = '4839' and vWareneingangsarchiv.cWarenLagerPlatz = 'Retoure'  
and tartikel.cArtNr like '%gd40543def%' and DATEdiff (DAY,vWareneingangsarchiv.dErstellt,GETDATE()) <= 20  

vielleicht lässt sich dort etwas ausmachen.
MadMax
MadMax 26.11.2019 um 13:14:01 Uhr
Goto Top
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:
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 face-smile

Gruß, Mad Max
BlueEyePhoenix
BlueEyePhoenix 26.11.2019 um 13:22:01 Uhr
Goto Top
Danke das werde ich machen.

Mal schauen ob ich da eine passende Lösung für finde.
ukulele-7
Lösung ukulele-7 26.11.2019 um 16:03:36 Uhr
Goto Top
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.