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-Key: 57800

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

Printed on: April 18, 2024 at 22:04 o'clock

Member: BigWumpus
BigWumpus Apr 28, 2007 at 15:07:50 (UTC)
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.
Member: Guenni
Guenni Apr 28, 2007 at 16:51:51 (UTC)
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
Member: bastla
bastla Apr 28, 2007 at 17:09:32 (UTC)
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
Member: Shagrath
Shagrath Apr 28, 2007 at 20:49:15 (UTC)
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
Member: BigWumpus
BigWumpus Apr 28, 2007 at 22:39:03 (UTC)
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...
Member: Shagrath
Shagrath Apr 29, 2007 at 11:20:56 (UTC)
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
Member: Biber
Biber Apr 30, 2007 at 18:37:46 (UTC)
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
Member: Shagrath
Shagrath May 01, 2007 at 13:39:31 (UTC)
Goto Top
Boah Biber, der war wirklich nicht schlecht. face-smile

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