ORDER BY plusieurs critères
Bonjour,
J'ai une table évènement constituée comme ceci :
id |
titre |
date_debut |
date_fin |
1 |
Mon evenement 1 |
2014-09-10 15:40:00 |
2014-09-15 20:40:00 |
2 |
Mon evenement 2 |
2014-09-15 15:40:00 |
2014-09-15 20:40:00 |
-- |
-- |
-- |
-- |
Je souhaite sélectionner les événements dans un intervalle donné en fonction d'une date X.
Mon code PHP
Code:
1 2 3 4 5 6
|
$currentDate = $_GET['date'];
$dateToday = new DateTime(date("Y-m-d"));
$dateSelect = new DateTime($_GET['currentDate ']);
$dateDiff = date_diff($dateToday, $dateSelect);
$interval = intval($dateDiff->format('%a')); |
Voici ma requête actuellement :
Code:
1 2 3 4 5 6
|
SELECT id
FROM evenements
WHERE (CURRENT_DATE() + INTERVAL :interval DAY BETWEEN DATE(date_debut) AND DATE(date_fin))
AND IF(DATE(date_fin) = CURRENT_DATE(), date_fin > CURRENT_TIMESTAMP(),1=1)
ORDER BY date_debut ASC |
où :interval est la variable PHP $interval qui correspond au nombre de jours entre la date X et aujourd'hui. Exemple pour : "Je souhaite sélectionner les événements qui se déroulent DEMAIN", $interval vaudra 1.
Cependant j'aimerais trié mes résultats d'une manière bien particulière :
- J'aimerais d'abord avoir les événements où la date de début est la date X et que la durée de l’événement soit inférieur à 1 jour rangé par date_debut ASC
- Et ensuite les autres événements rangés par date_debut ASC.
Auriez-vous une solution ou des pistes à me proposer ?
Merci.