Abfrage-Problem in Access

Hallo zusammen

Ich habe eine Preistabelle, in der jeder Preis x mal vorkommt. Dabei hat jeder ein Datum „gültig ab“:

Preis1 1.3.87
Preis1 1.4.90
Preis1 1.1.00
Preis2 1.1.99
Preis2 1.4.99

Ich sollte nun eine Access 97-Abfrage hinbekommen, dass ich jeweils nur den jüngsten des jeweiligen Preises sehe:

Preis1 1.1.00
Preis2 1.4.99

Habe schon einiges versucht mit Max() und so aber leider ohne Erfolg.

Wäre froh um einen Tipp.

TIA & Gruss
Martin Bucher, Zürich

Hi!

Gib doch bei der Abfrage order by für das Datum an und nimm den ersten(Letzen) Datensatz bzw. falls möglich setz in der Tabelle das Datum als primarykey an…

Gruß

Bernd

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Jessas ne! Ich muß mich schon wundern.
Er möchte eine Abfrage; wie er seine Daten sonst kriegt, ist ihm wahrscheinlich längst klar.
Select Preis, max(Gueltig_ab)
from Preistabelle
group by Preis
order by Preis, Gueltig_ab;

Gruß

J.

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo José

Jessas ne! Ich muß mich schon wundern.
Er möchte eine Abfrage; wie er seine
Daten sonst kriegt, ist ihm

So einfach ist es dann auch wieder nicht :smile: … Dein Vorschlag ergibt die folgende Fehlermeldung:


You tried to execute a query that doesn’t include the specified expression „tblPreise1.GUELTIG_AB“ as part of an aggregate function.

Gruss
Martin Bucher, Zürich

Hi Martin!

Gib mal bei unserem Superman unter group by „gueltig_ab“ mit an, daß behebt glaube ich das Problem…

Gruß

Bernd

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hi Martin!

Gib mal bei unserem Superman unter group
by „gueltig_ab“ mit an, daß behebt glaube
ich das Problem…

Ja, glaubst Du. Ist aber nicht so.

Das Problem liegt in der Order By-Klausel, die eine Spalte beinhaltet, die nicht in der Group By-Klausel vorkommt.
Nimmt man sie aber dort auf, würdest Du nach Preis UND Datum gruppieren, würdest also sämtliche Datensätze auswählen (und nicht den jeweils jüngsten).

Zwei mögliche Ansätze: Streich Gueltig_ab von der Order By-Klausel (sortiert wird nur nach Preis):
Select Preis, max(Gueltig_ab)
from Preistabelle
group by Preis
order by Preis;

Oder ersetze Gueltiig_ab durch max(Gueltig_ab) (sortiert wird, wie eingangs vorgesehen, nach beiden Werten):
Select Preis, max(Gueltig_ab)
from Preistabelle
group by Preis
order by Preis, max(Gueltig_ab);

Sorry, ich hatte den Krempel nicht ausprobiert. Mit ein wenig Verständnis für SQL, Gruppierungen und Mengenlehre hätte aber jeder kompetente Datenbankexperte das erkennen können (huhu Bernd!)
Gruß
J.

Gruß

Bernd

Hallo José

So einfach ist es dann auch wieder nicht

) … Dein Vorschlag ergibt die folgende

Fehlermeldung:


You tried to execute a query that doesn’t
include the specified expression
„tblPreise1.GUELTIG_AB“ as part of an
aggregate function.

Gruss
Martin Bucher, Zürich

Warum streicht ihr die Order By-Klausel eigentlich nicht? Eine Sortierung war doch in Martins ursprünglicher Frage nicht vorgesehen.

Sorry, ich hatte den Krempel nicht
ausprobiert.

Tue ich bei meinen Antworten auch nicht, da zu zeitaufwendig.

Harald

Vielen Dank für Eure Antworten.

Mir ist aber trotzdem noch nicht ganz klar, wie ich dann noch mehr Attribute in dieser Abfrage zeigen kann.

Also immer der aktuellste Preise, die Artikelnummer und noch einige andere Attribute, wie z.B. Bemerkung, Beschreibung, usw.

TIA & Gruss
Martin