Selection anhand vom höchsten Datum oder ID

Mauri6687

Benutzer
Beiträge
7
Hallo zusammen,

ich steh vor einer richtigen Hirnblockade und hoffe ihr könnt mir weiterhelfen.
Ich habe folgende Tabelle:

table rennen
(

rennen_id INT NOT NULL AUTO_INCREMENT,
strecken_id INT NOT NULL,
fahrer_id INT NOT NULL,
wetter VARCHAR(40) NOT NULL,
rennen_date DATE,
dauer VARCHAR(40) NOT NULL
PRIMARY KEY ( strecken_id )
);

Frage:
Wie müsste die SQL Anweisung lauten, wenn ich wissen möchte.
Wann jeder Fahrer das letzte mal auf der Strecke war, wo unter wetter ='sonnig' steht.

where wetter like||= 'sonnig' ist klar, aber mit der Selektion des letzten bzw. jüngstem Datum oder der höchstem strecken_id tu ich mir schwer.


PS: Aggregatsfunktionen ist nicht so meinst^^
 
Werbung:
oder der höchstem strecken_id
Das hier ist in jedem Fall schon ein falscher Ansatz, ohne dass es überhaupt um SQL geht.
Oder möchtest Du die höchsten Strecken für Bergrennen auswerten? (Kleiner Spaß - mit einem wahren Kern)

Genau wie beim Datum des Rennens, dass sich hervorragend dazu eignet, das "höchste Datum", also das letzte, jüngste Rennen zu filtern oder Abfragen über die letzte Woche, usw. zu erstellen, wird es auch bei der Strecke nicht um die höchste ID gehen, sondern irgendetwas anderes..

Du nutzt niemals ID als Kriterium zur Sortierung oder ähnliches. Es gibt Ausnahmen, die Du erkennen wirst, wenn Du das Thema verstanden hast.

Wie sieht Deine Abfrage bis jetzt aus? "Having" setzt Kriterien an einer Aggregation an, das ist nicht grundsätzlich falsch. Die Aggregation kommt aber davor.
 
Grundfalsch.

Code:
 fahrer |       datum        | wetter
--------+--------------------+--------
      1 | 01-JAN-21 00:00:00 | sonnig
      1 | 01-JUN-21 00:00:00 | regen
      2 | 01-FEB-21 00:00:00 | regen
      2 | 01-MAR-21 00:00:00 | sonnig
(4 rows)

edb=*# select fahrer, max(datum) from rennen where wetter = 'sonnig' group by fahrer;
 fahrer |        max         
--------+--------------------
      1 | 01-JAN-21 00:00:00
      2 | 01-MAR-21 00:00:00
(2 rows)

edb=*#
 
Werbung:
Grundfalsch.

Code:
 fahrer |       datum        | wetter
--------+--------------------+--------
      1 | 01-JAN-21 00:00:00 | sonnig
      1 | 01-JUN-21 00:00:00 | regen
      2 | 01-FEB-21 00:00:00 | regen
      2 | 01-MAR-21 00:00:00 | sonnig
(4 rows)

edb=*# select fahrer, max(datum) from rennen where wetter = 'sonnig' group by fahrer;
 fahrer |        max       
--------+--------------------
      1 | 01-JAN-21 00:00:00
      2 | 01-MAR-21 00:00:00
(2 rows)

edb=*#


Das wars ^^ Danke für deine Hilfe!

Bin ums verrecken nicht drauf gekommen, dass die Max Funktion in der Select Anweisung stehen sollte XD Schande über mich ^^
 
Zurück
Oben