Hi, ich habe da ein Problem, welches sicherlich einfach zu lösen ist, aber ich bekomm es einfach nicht hin >:(.
Ich möchte eine Abfrage erstellen, welche sich auf eine Tabelle (tbl_Bilder) mit 4 Spalten bezieht.
EinlaufNR - Int
ID_Bild - char (Primary Key)
Bilddatum - date
Bildbeschreibung - char
Pro EinlaufNR können mehrere Bilder mit logischerweise verschiedenen ID_Bild - Nummern existieren. Dabei können diese Bilder aber durchaus das gleiche Datum haben.
Ich möchte aber nun nur das zu jeder EinlaufNR gehörende aktuellste Bild, wenn es da mehere vom gleichen Datum gibt soll er nach der größten ID_Bild gehen.
Ich hoffe es ist erst einmal klar geworden, worum es mir geht.
Das folgende läuft zwar, bringt mir aber dann nicht den gewünschten Datensatz, sondern eben, zu jeder EinlaufNR das neuste Datum und die höchste ID_Bild.
SELECT EinlaufNR, MAX(Bilddatum), MAX(ID_Bild), FIRST(Bildbeschreibung)
FROM tbl_Bilder
GROUP BY tbl_Bilder.EinlaufNR;
Schon mal danke für die zahlreichen Tipps und Tricks :)
Hallo,
versuch mal so:
SELECT EinlaufNr, Max(Bilddatum) AS Bilddatum, Last(ID_Bild) AS ID_Bild, Last(Bildbeschreibung) AS Bildbeschreibung
FROM tbl_Bilder
GROUP BY tbl_Bilder.EinlaufNr;
HTH
p.s. lösche die Umfrage wieder raus ... siehe auch PN ;)
Hi, erst mal Danke für die schnelle Antwort.
Leider hat dies noch nicht ganz zum gewünschten Resultat geführt. Zunächst hab ich da die Fehlermeldung zum Zirkelbezug bekommen, da scheinbar der Spaltenname identisch ist. Hab den Code dann so abgeändert, dass die Namen nicht Übereinstimmen und dann wird er wenigstens ausgeführt.
Bei dieser Beispieltabelle (tbl_Bilder)
EinlaufNR ID_Bild Bilddatum Bildbeschreibung
1 1 07.02.2008
1 1_1 08.02.2008
2 2 08.02.2008
2 2_1 08.02.2008
2 2_2 09.02.2008 HalloBild
2 2_3 08.02.2008
3 3 09.03.2009
liefert
SELECT EinlaufNr, Max(Bilddatum) AS Bilddatum1, Max(ID_Bild) AS ID_Bild1, Last(Bildbeschreibung) AS Bildbeschreibung1
FROM tbl_Bilder
GROUP BY tbl_Bilder.EinlaufNr;
EinlaufNR ID_Bild Bilddatum Bildbeschreibung
1 1_1 08.02.2008
2 2_3 09.02.2008
3 3 09.03.2009
Der Code von dir bringt
(SELECT EinlaufNr, Max(Bilddatum) AS Bilddatum1, Last(ID_Bild) AS ID_Bild1, Last(Bildbeschreibung) AS Bildbeschreibung1
FROM tbl_Bilder
GROUP BY tbl_Bilder.EinlaufNr;)
EinlaufNR ID_Bild Bilddatum Bildbeschreibung
1 1 08.02.2008
2 2 09.02.2008
3 3 09.03.2009
Ich möchte aber als Ergebnis
EinlaufNR ID_Bild Bilddatum Bildbeschreibung
1 1_1 08.02.2008
2 2_2 09.02.2008
3 3 09.03.2009
Und wie schon Eingangs erwähnt sollte er, wenn zu einer EinlaufNR meherere Bilder mit gleichem Datum da sind die höchste ID_Bild nehmen. Er soll aber auf keinen Fall einen neuen Datensatz erzeugen, den es ja gar nicht gibt.
Hallo,
sieh mal im Anhang!
Ich habe deine Tabellendaten in ein Beispiel gefaßt.
Irgendwie stehen die Tabellendaten aber in Widerspruch, da bei 2_2 und 2_3 für die höhere ID ein niedrigeres Datum in der Tabelle steht. ???
Zitat...Er soll aber auf keinen Fall einen neuen Datensatz erzeugen, den es ja gar nicht gibt...
Es wird kein neuer Datensatz erzeugt, das passier wahrscheinlich durch die Kombi Letzter Wert und Max ID
HTH
[Anhang gelöscht durch Administrator]
Hi, also entweder liegt es an mir oder ich weiß nicht so recht ob wir uns da verstanden haben :-\
Deine Abfrage bringt doch für EinlaufNr: 2 als Bilddatum den 09.02.2008 (was ja auch richtig ist) aber dazu wird die ID_Bild
2_3 ausgegeben und das ist doch falsch oder???. Diesen Datensatz gibt es doch gar nicht. Zum 09.02.2008 gehört doch die ID_Bild 2_2.
Sorry, wenn es an mir liegt und ich es einfach net raffe.
Wie schon gesagt, das ist kein neuer Datensatz - der exisitiert ja nicht in der Tabelle.
Das ist die Darstellung der vorhandenen Daten, wobei durch die Kombination Max, Last und der Tatsache, dass der Datensatz mit der höchsten ID
ein niedrigeres Datum beinhaltet, der Inhalt von 2 Datensätzen 'verschoben' dargestellt werden.
Ich versuch noch was ...
Ich denke, dass mit diesem Tabellenaufbau das gewünschte Ergebnis nicht realisierbar ist.
Vielleicht übersehe ich auch etwas - denke aber eher nicht.
Ich finde keine Möglichkei eine auswertbare Eindeutigkeit in den 2_2 - Datensatz zu bringen
Hallo,
offensichtlich habe ich dann doch was übersehen ...
im Anhang findest du eine Lösung, die das Ergebnis zeigt, das du erwartet hast. ;D
Hoffe das ist so in der Form für dich einsetzbar.
[Anhang gelöscht durch Administrator]
;D ;D ;D
Na supie, das sieht doch gut aus. Dies sollte es tun, werde es mal ins große Ganze einfügen und dann testen.
Aber ich denke ich kann dies beruhigt als gelöst markieren.
Noch mal vielen Dank für die Mühe.
Peter dankt Peter :D
Hallo auch,
ich hoffe, dass das Ding auch im 'großen Ganzen' seinen Dienst ordungsgemäß leistet.
Ich schreibe 'hoffe' da m.E. in der ganzen Sache ein gewisses Maß an Unsicherheit vorhanden bleibt - keine Felder der Tabellen-/Abfrageverknüpfungen sind
Schlüsselfelder und KÖNNTEN somit auch willkürlich in der Herkunftstabelle geändert werden - was dann wiederum weitere Probleme bei der Auswertung bringen würde.
Schönen Samstag!