Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Abfrage letztes Datum pro Artikel

Begonnen von gumpili, November 30, 2010, 20:47:32

⏪ vorheriges - nächstes ⏩

gumpili

Hallo zusammen.
Ich habe eine Liste mit vielen  Artikeln und Fertigungsaufträgen, Fertigungsauftragsenddatum.
also ein Artikel kann 10 mal mit 10 verschiedenen Fertigungsaufträgen vorkommen.
Jetzt möchte ich eine Gruppe pro Artikel, aber nur den Datensatz vom letzten Fertigungsauftrag anzeigen.
Also wenn Artikel xy drei FA hat mit Datum FA01 01.01.2007, FA02 01.01.2008, FA03 01.01.2009 soll nur der DAtensatz angezeigt werden mit dem 01.01.2009.


Geht das?

Danke schon mal

Gruß Andrea

database

Hallo,

eine denkbare Möglichkeit wäre es das letzte Fertigungsdatum eines bestimmten Artikels zu ermitteln und den zugehörigen Datensatz der Auftragstabelle abzurufen.


SELECT ArtikelNr, FDatum, FAnzahl
FROM tblFertigung
WHERE ArtikelNr=1 AND FDatum=(SELECT Max([FDatum]) FROM tblFertigung WHERE Artikelnr=1);


Gruß
Peter

Erklärbär

Hallo Andrea,

ich bin zufällig auf Deine Frage gestoßen. Konntest Du das Problem lösen?
Derzeit habe ich ein ähnliches Problem.
Das Abfrageergebnis soll Gruppiert nach Artikel immer den vollständigen Datensatz mit dem letzten Datum herausgeben
und da liegt die Schwierigkeit. Man kann zwar nach Max(datum) suchen bekommt aber nicht die anderen Datenfelder mitgeschleppt,
die sich in dem Datensatz befinden.

Die vorgeschlagene Lösung gibt ja leider nur das Ergebnis für einen Artikel heraus.

Gruß
Ralph



DF6GL

Hallo,

auch wenn ich nicht Andrea bin  ;)


Select * from tblDeineTabelle  where ID = (Select Top 1 temp.ID
From tblDeineTabelle  as temp Where temp.ArtikelNr = tblDeineTabelle.ArtikelNr
Order by temp.Datumsfeld Desc )

ricog

Hallo,

ich habe auch gerade das gleiche Problem. Ich kann aber mit dem Code nix anfangen - also ich hab ihn nicht durchschaut (bin in SQL auch kein Experte)...
benötige eure Hilfe... geht das etwa über die ID der Tabelle? erscheint mir unlogisch...

database

Hallo,

nein, nein, das ist gar nicht unlogisch - wenn man weiß wie der Ablauf funktioniert.  ::)

Also zuerst mal wird der Ausdruck innerhalb der Klammern abgearbeitet.
Hierbei wird eine Instanz, ein Alias (temp) der Tabelle mit dem Original über die Artikelnummer verknüpft.
Aus diesem Kontrukt wird die ID jenes Datensatzes ermittel der in der Ergebnisliste ganz oben steht. die Sortierung erfolgt durch die Anwisung Order By - wobei DESC eine Sortierung von Groß nach klein, von Z nach A, von Hoch nach Niedrig bewirkt.
Mit Hilfe dieser gefundenen ID werden dann alle Tabellenfelder (SELECT * ...) ausgegeben deren Primärschlüssel (in dem Fall die ID) gleich dem gefundenem Wert der Unterabfrage ( innerhalb der Klammern ) ist.

In dem Fall also alle relevanten Informationen zu einem ganz bestimmten Artikel und zwar jenem, der beim letzten (höchsten, spätesten) Fertigungsdatum beteiligt war.

so ungefähr jetzt klarer die Sache?  8)

ricog

und damit zeigt dann die Abfrage alle Artikel mit zugehörigem neuestem Fertigungsdatum an???...

database

Hi,

Zitatund damit zeigt dann die Abfrage alle Artikel mit zugehörigem neuestem Fertigungsdatum an
nein, in dem Fall nur einen! Und zwar jenen, der beim höchsten Datum beteiligt war.
Die Unterabfrage liefert für die Auswertung der Tabelle (tblDeineTabelle) genau EINE ID und der Artikel dem diese ID zugeordnet ist, wird ausgewählt.

Du kannst natürlich die Abfragen in diesem Beitrag nicht verallgemeinen, diese wurden für einen ganz bestimmten Zweck erstellt, sie liefern nur das Ergebnis das in der Problembeschreibung angefragt wurde.
Sie können aber als Basis für dein Problem dienen und die von dir benötigten Ergebnisse liefern, wenn sie auf DEINE Bedürfnisse und DEINE Gegebenheiten angepasst werden.

Ich würde daher vorschlagen du erstellst ein neues Thema und beschreibst darin detailliert
welches Problem du hast und wie wir dir eventuell helfen können  ;)


ricog

so werde ich das wohl auch machen

trotzdem erstmal vielen Dank