shagrath
Goto Top

min-Funktion in Access-Abfragen

Hi,

folgendes (wahrscheinlich schnell lösbares) Problem. Wie bringe ich in Access eine Abfrage dazu, mir den Datensatz mit dem kleinsten Wert einer Spalte rauszufiltern (z.B. der jüngste Mitarbeiter o.ä.)? Die Funktionen min haben mit auch nicht wirklich weitergeholfen (es tut sich gar nix bei den Funktionen) und im Internet hab ich auch nicht wirklich was gefunden.

Content-ID: 57800

Url: https://administrator.de/forum/min-funktion-in-access-abfragen-57800.html

Ausgedruckt am: 26.12.2024 um 00:12 Uhr

BigWumpus
BigWumpus 28.04.2007 um 17:07:50 Uhr
Goto Top
Nur den jüngsten Mitarbeiter ?

Entweder Du erstellst eine Abfrage, die Du nach dem Geburtsdatum sortieren läßt - da ist es der erste Datensatz.

Oder Du erstellst eine Abfrage mit Gruppierung ohne Bedingungen und nur mit dem Geburtsdatum und der Funktion MIN. Dann erhälst Du 1 Datenfeld.

Oder Du benutzt die Funktion "DOMMIN([Tabelle];[Spalte])" (Schreibweise bitte checken, ich tippe hier nur so rum.

Oder .... bei OBI.
Guenni
Guenni 28.04.2007 um 18:51:51 Uhr
Goto Top
@Shagrath

Hi,

die Funktion min funkt. auch mit Datum-Spalten.

Bei deinem Beispiel "Jüngster Mitarbeiter" willst du vermutlich nicht nur das Geb.-Datum
sehen, sondern auch den Namen etc.:

select name, vorname, datum from tabelle
where datum=(select min(datum) from tabelle)

... liefert dir das(vermutlich) gewünschte Ergebnis.(Gerade getestet!)

Grüße
Günni
bastla
bastla 28.04.2007 um 19:09:32 Uhr
Goto Top
Hallo Shagrath!

Als kleine Ergänzung zum Vorschlag von BigWumpus:
Entweder Du erstellst eine Abfrage, die Du nach dem Geburtsdatum sortieren läßt - da ist es der erste Datensatz.
Wenn Du dann noch in den Eigenschaften der Abfrage (dazu im oberen Bereich des Abfrageentwurfsfensters aus dem Kontextmenü "Eigenschaften" wählen) "Spitzenwerte" auf 1 setzt, wird auch nur dieser erste Datensatz ausgegeben.

Grüße
bastla
Shagrath
Shagrath 28.04.2007 um 22:49:15 Uhr
Goto Top
He, der war echt gut. Danke an alle. Der filtert jetzt den kleinsten hinaus, aber: Die Abfrage soll erstmal eine bestimmte Berufsgruppe rausfiltern (was nicht das Ding is) und dann soll der jüngste rausgefiltert werden (als ganze Zahl geschrieben, nicht als Datum). Hab gemerkt das ich die where-Anweisung vor der Berufsfilterung in den SQL-Code einsetzen muss. Daraus folgt der sucht sich den jüngsten Typen aus und merkt dann das der letzte Datensatz den Beruf nicht mehr hat und übrig bleibt gar kein Datensatz.

Hier mal der Code.

SELECT Mitarbeiter.Mitnr, Mitarbeiter.Name, Mitarbeiter.Vorname, Mitarbeiter.Ort, Mitarbeiter.Alter, Mitarbeiter.Beruf, Mitarbeiter.Telnr
FROM Mitarbeiter
WHERE (((Mitarbeiter.Alter)=(select min(Alter) from Mitarbeiter)))
GROUP BY Mitarbeiter.Mitnr, Mitarbeiter.Name, Mitarbeiter.Vorname, Mitarbeiter.Ort, Mitarbeiter.Alter, Mitarbeiter.Beruf, Mitarbeiter.Telnr
HAVING (((Mitarbeiter.Beruf)="Dipl.-Ing."));

Jetzt isses logisch, dass der erst den Beruf sucht nachdem der den jüngsten Knilch gesucht hat. Ich kann allerdings das "HAVING" nicht vor das "WHERE" setzen. Hat einer vielleicht noch ne Idee. Ich hab (noch) keinen Plan von SQL und ich wollte es in eine einzige Abfrage abarbeiten.

Danke schon mal.

Shagrath
BigWumpus
BigWumpus 29.04.2007 um 00:39:03 Uhr
Goto Top
OK,
Du solltest Dich entscheiden, ob Du der SQL-Fraktion folgen willst, oder ob Du das grafische Frontend Access verwenden willst.

Access:
Abfrage -
Tabelle hinzufügen -
Irgendwie diese Gruppierungsfunktion aktivieren
Spalte Beruf doppelt klicken und als "Bedingung" angeben und als Kriterium "Dipl. Ing."
Spalte Eintrittsdatum doppelt klicken und "Min" angeben.

Ausrechnen kannste das jetzt auch, würde dann aber wohl eine neue Abfrage sein, die die Daten aus dieser Abfrage nimmt und die Anzahl der Tage errechnet...
Shagrath
Shagrath 29.04.2007 um 13:20:56 Uhr
Goto Top
Alles klar, habs jetzt so gemacht. Eine Abfrage mit wo nur der Beruf gefiltert wird und eine zweite Abfrage mit den Datensätzen auf der ersten Abfrage und mit der where-Anweisung nach Alter gefiltert.

Schön' Dank an alle.

Shagrath
Biber
Biber 30.04.2007 um 20:37:46 Uhr
Goto Top
Moin Shagrath,

hmmm... da sperre ich mich ein bisschen, den Beitrag so zu schließen...

Das ist mir viel zu komplex.

Probierst Du mal diesen hier:
SELECT TOP 1 Mitarbeiter.*
FROM Mitarbeiter
where Beruf="Dipl.-Ing."  
Order by Alter

Gruss
Biber
Shagrath
Shagrath 01.05.2007 um 15:39:31 Uhr
Goto Top
Boah Biber, der war wirklich nicht schlecht. face-smile

Schön' Dank, dann ist das Problem jetzt erst recht ordentlich gelöst.