měl bych dvě prosby. Mám následující SQL dotaz, prvně je dosti pomalý (cca 2 sekundy), šlo by to nějak poladit? Lépe už jsem to neuměl.
A za druhé, potřebuji tam, co ej GROUP_CONCAT, aby to nějak joinulo i jména kurýrů jako v joinu nad tím, a vložilo k IDéčkám v tom concatu, abych nemusel mít zvlášť další dotaz jen na jména kurýrů ...
Díky ...
- Kód: Vybrat vše
$result3 = $db2->query("SELECT * FROM dt_mot_max_time");
$sql_del = array();
while ($r3 = $result3->fetch_array()){
for ($i1=0;$i1<=1;$i1++){
$timed = $r3['dt_mot_max_time'];
if ($i1==1) $timed *= 2;
$sql_del[] = "
WHEN
delivery.delivery_type_id='".$r3['delivery_type_id']."' AND
delivery.mot_id='".$r3['mot_id']."' AND
delivery.delivery_return='".$i1."'
THEN DATE_ADD(delivery_date_created, INTERVAL ".$timed." MINUTE)
";
}
}
$sql_del_final = implode(" ",$sql_del);
$result4 = $db2->query("
SELECT *, @couriers = '',
(CASE
".$sql_del_final."
END) AS enddate
FROM delivery
LEFT JOIN user ON delivery.user_id=user.user_id
LEFT JOIN mot ON delivery.mot_id=mot.mot_id
LEFT JOIN delivery_type
ON delivery.delivery_type_id=delivery_type.delivery_type_id
LEFT JOIN (
SELECT courier_name AS courier_name, courier_id
FROM courier) courier1
ON delivery.courier1_id=courier1.courier_id
LEFT JOIN (
SELECT courier_name AS courier_name2, courier_id
FROM courier) courier2
ON delivery.courier2_id=courier2.courier_id
LEFT JOIN (
SELECT GROUP_CONCAT( IFNULL(courier_id,0) SEPARATOR ',') AS couriers,
MAX(id) AS id8, delivery_id, id AS id7
FROM courier_interest
GROUP BY delivery_id
ORDER by id DESC
LIMIT 200) interest
ON interest.delivery_id=delivery.delivery_id
WHERE delivery_date_created<='$date1'
ORDER BY
enddate DESC, delivery.delivery_id DESC
LIMIT 30");