Udvælge Længste og Kortes timestamp i database
HejJeg har rodet med et problem noget tid og syntes at have set mig godt blind på en løsning.
jeg har nogle kunder. som bestiller noget til produktion, derfor har de en start tid på deres bestilling og en slut tid hvor deres produkt er færdig.
det har jeg lagt i 4 tabeller som ser således ud.
kunde
kunde_id
kunde_navn
ordre
ordre_id
ordre_nummer
ordre_kunde_id ( forbindelse til kunde )
stadie
stadie_id
stadie_navn
stadie_tid
stadie_tid_id
stadie_start
stadie_slut
stadie_id ( forbindelse til stadie)
stadie_ordre_id ( forbindelse til ordre
mit problem er nu at jeg gerne ville have følgende spyttet ud.
Hvilken Ordre som er den næste der er færdig på en valgt kunde.
problemet er at jeg for kun sorteret start og slut på en ordre, men jeg for ikke sorteret den til kun vise den ENE ordre som har den næste slut dato.
jeg har følgende kode.
$j = 0;
$sql_maxtid = "SELECT * FROM Stadie_tid WHERE stadie_slut in (select max(stadie_slut) from Stadie_tid group by ordre_id) group by stadie_slut,ordre_id order by ordre_id asc" ; // vælger ældste timestamp i stadie_tid
$result_maxtid = $conn->query($sql_maxtid);
while($row_maxtid = $result_maxtid->fetch_assoc())
{
$j ++;
echo "<br><br><br> loop : " . $j ." : _____________________________________________________________________ <br><br><br>" ;
$OrdreID = $row_maxtid[ordre_id];
$sql_mintid = "SELECT * FROM Stadie_tid WHERE ordre_id = $OrdreID AND stadie_start in (select MIN(stadie_start) from Stadie_tid group by ordre_ID) group by stadie_start,ordre_ID order by ordre_ID asc"; // vælger mindste timestamp i stadie_tid
$result_mintid = $conn->query($sql_mintid);
while($row_mintid = $result_mintid->fetch_assoc())
{
$OrdreID = $row_mintid[ordre_Id];
$sql_ordre = "SELECT * FROM `Ordre` WHERE Ordre_id = $OrdreID";
$result_ordre = $conn->query($sql_ordre);
while($row_ordre = $result_ordre->fetch_assoc())
{
$start = date("d F Y H:i:s", $row_mintid[stadie_start]);
$slut = date("d F Y H:i:s", $row_mintid[stadie_slut]);
echo "<br>items.add ({";
echo "<br>Ordreid: " .$row_maxtid[ordre_Id] . ",";
echo "<br>KundeId: " . $row_ordre[ordre_Kunde_id] . ",";
echo "<br>content: 'Ordre - " . $row_ordre[Ordre_nr] . "',";
echo "<br>start: " .$start . ",";
echo "<br>end: " .$slut . ",";
echo "<br>})";
}
}
}
som afgiver dette resultat:
loop : 1 : _____________________________________________________________________
items.add ({
Ordreid: 45,
KundeId: 22,
content: 'Ordre - 45',
start: 07 May 2017 06:00:00,
end: 07 May 2017 16:00:00,
})
loop : 2 : _____________________________________________________________________
items.add ({
Ordreid: 47,
KundeId: 23,
content: 'Ordre - 47',
start: 05 May 2017 06:00:00,
end: 05 May 2017 16:00:00,
})
loop : 3 : _____________________________________________________________________
items.add ({
Ordreid: 48,
KundeId: 23,
content: 'Ordre - 48',
start: 01 June 2017 06:00:00,
end: 02 June 2017 16:00:00,
})
loop : 4 : _____________________________________________________________________
items.add ({
Ordreid: 49,
KundeId: 23,
content: 'Ordre - 49',
start: 03 May 2017 06:00:00,
end: 03 May 2017 16:00:00,
})
loop : 5 : _____________________________________________________________________
items.add ({
Ordreid: 50,
KundeId: 23,
content: 'Ordre - 51',
start: 03 May 2017 06:00:00,
end: 03 May 2017 16:00:00,
})
loop : 6 : _____________________________________________________________________
items.add ({
Ordreid: 51,
KundeId: 23,
content: 'Ordre - 50',
start: 02 June 2017 06:00:00,
end: 03 June 2017 16:00:00,
})
og det jeg så gerne ville have haft den til, var kun at vise EN ordre per kunde ID og ikke som her hvor den viser alle ordre, og jeg har simpelthen fået set mig godt blind på løsningen, som sikkert er meget simpel, derfor håber jeg en eller flere her inde kunne komme med en hjælpende hånd :D
p.s
ved det lidt svært at forklare, så hvis det ikke giver mening beklager jeg.
hilsen looni