Mijn tabel ziet er als volgt uit incl. wat voorbeeld data:

RecordID SampleTime
1 21-Apr-2007 7:53:26
2 22-Apr-2007 5:29:36
3 24-Apr-2007 22:18:1
4 23-Apr-2007 3:05:37
5 24-Apr-2007 0:41:46

hoe moet mijn query zijn om het volgende te bereiken?
ID SampleTime
1 22-Apr-2007 5:29:36
2 21-Apr-2007 7:53:26
3 24-Apr-2007 0:41:46
4 24-Apr-2007 0:41:46
5 24-Apr-2007 22:18:1

Zoals je ziet wordt van elk RecordID de dichtsbijzijnde SampleTime gezocht op basis van zijn huidige SampleTime

Ik snap niet precies wat je nu wilt. Wil je sorteren op de datum icm de tijd?
Ik wil aan elk RecordID een nieuwe tijd toewijzen. Deze nieuwetijd verkrijg je om de dichtsbijzijnde datum/tijd uit de tabel te vinden. Op basis van de oude datum/tijd.
Dat is niet zo heel eenvoudig. De query voor 1 record is niet zo moeilijk, maar dit op alle records toepassen wordt een probleem.

Zodra jij namelijk 1 record aangepast hebt, heb je de oude tijd van dat record niet meer tot je beschikking voor het aanpassen van een ander record.

Maar ik vraag me ook af waarom je dit zou willen? En is er niet een slimmere oplossing voor te bedenken?
Waarom dit moet is te complex om uit te leggen..

Bij mijn bijbaantje werd dit gevraagt. Dit moest overigens in mssql2000 gebeuren. Wat mij niet lukt. In mssql2005 lukt mij dit overigens wel. Omdat hier de "Top" functie variabel gebruikt kan worden.

Voorbeeld: "Select top x from tblTest" de x kan hier variabel gebruikt worden.
Dan zet je het dus in een sql while loop. Zodat elk record appart uitgelezen kan worden en de daarbij horende tijd erbij gezocht kan worden.

In MySQL heb je de functie LIMIT die ook variabel gebruikt kan worden. Dus moet het ook lukken. Probleem is nu dus dat er overgestapt naar mssql2005 moet worden. Of de db structuur moet aangepast worden, wat ook weer een karwei opzich is.

Ik had gehoopt dat in deze richting zoeken ging werken:

SELECT DATEDIFF(a.sampletime, b.sampletime)
FROM
tabel AS a
, tabel AS b


eventueel een
<?php
$list = "21 April 2007 7 53 26;22 April 2007 5 29 36;";
$list = explode'(';', $list);
foreach ($list as $item) {
if (strtotime($item) > $hoogstetijd) {
$hoogstetijd = strtotime($item);
}
}

echo "Uitvoer: ".$hoogstetijd;
?>

Ik ben alleen niet zeker van de tijd, kijk anders ff op [php]strtotime[/php].

[/edit]Laat maar, vraag verkeerd begrepen ;)[/edit]
probleem is dat het een stored procedure moet worden. En dat geen programmeertaal als php, asp, vb of dergelijke gebruiken. Het wordt dus een onderhoudsfunctie die volledig in SQL moet worden geschreven.

Reageren