[MySQL 4.1] SQL-Abfrage, mit MIN() oder anders?

chesi

Grünschnabel
Hallo Forum, ich bin fast am Verzeifeln. :( Ich habe jetzt fast 2 Tage lang versucht, meine Abfrage richtig zu formulieren, und nach tage- (und nächte-) langem Suchen auf dem Internet bin ich noch immer nicht schlau geworden. Vielleicht ist jemand so nett, und gibt mir einen Tipp...

Es ist so, ich habe eine Tabelle "vehicles" mit folgenden Kolonnen:

id ¦Name ¦ Vorname ¦ startort ¦ ankunftsort ¦ ankunfts_timestamp ¦ telefonnr


daraus möchte ich die Telefonummer der Person, die das kleinste Zeitintervall zwischen "ankunfts_timestamp" (vom Typ timestamp) und jetzt (now()) aufweist.
Ich habe vieles versucht, aber zum Beispiel:

SELECT telefonnr
FROM vehicles
WHERE ABS(TIME_TO_SEC(TIMEDIFF(ankunfts_timestamp, now()))) < 600;

benutzt, das gibt mir die Prima Liste aller Telefonnummern, bei welchen die Zeitdifferenz kleiner als 10min (600sekunden) ist. Nun möchte ich aber nicht alle, sondern nur eine Telefonnummer, und eben die mit dem kleinsten absoluten Zeitintervall zwischen ankunfts_timestamp und now() unter dieser Auswahl (kleiner als 600s). Ich habe versucht MIN() zu benutzen, indem ich MIN(ABS(TIME_TO_SEC.... usw benutzt habe, aber das geht natürlich nicht. Hat mir jemand einen Vorschlag?

Vielen Dank im Voraus für jegliche Hilfe!
 
Zuletzt bearbeitet:
Code:
SELECT
   telefonnr
FROM vehicles
WHERE (ankunfts_timestamp < NOW())
ORDER BY ankunfts_timestamp DESC
LIMIT 1

Ich weiss nicht ob's einfacher geht, aber ich denke, dass das die Standardmethode ist.
 
Vielen herzlichen Dank für die Hilfe! Es ist zwar nicht genau was ich brauchte, aber es hat mich auf die richtige Spur gebracht! Unglaublich wie kompliziert ich da überlegt habe, und wie einfach es geht... Wirklich vielen vielen Dank, endlich kann ich da weiterarbeiten!

Einen schönen Tag noch!
 
Zurück