|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Futur Membre du Club
![]() Inscription : décembre 2005 Messages : 75 ![]() |
Bonjour,
J'ai une table "events" avec les champs "date_start" et "date_end". Le champs "date_start" est toujours une date valide, alors que le champs "date_end" peut être NULL. En effet, certains events se produisent sur un seul jour alors que d'autres se produisent sur une période. Je cherche la requête SQL qui extrait les events de la façon suivante: - si "date_end" = NULL alors - sinon ("date_end" est renseigné) alors En d'autre termes, j'aimerais que mon SELECT renvoit les enregistrements selon ma clause WHERE qui dépend de la valeur de mon champs "date_end". Donc, pour chaque ligne il fat tester d'abord le champs "date_end" et en fonction du résultat la clause WHERE de la requête sera différente. Comment faire cela en une seule requête? Merci... |
|
|
00
|
|
|
#2 |
![]() ![]() ![]() Antoine DinimantConsultant en Business Intelligence Inscription : octobre 2006 Messages : 5 854 ![]() |
Code :
WHERE `date` BETWEEN date_start AND COALESCE( date_end, date_start) |
|
|
00
|
|
|
#3 | |
|
Futur Membre du Club
![]() Inscription : décembre 2005 Messages : 75 ![]() |
Merci pour votre réponse, Antoun! Êtes-vous l'auteur du livre mentionné dans votre signature?
Citation:
Puis, si la valeur de 'date' est égale à 'date_end' alors l'expression 'BETWEEN date_start AND date_end' est toujours vraie. Est-ce bien cela? Autre question: si un champs date contient la valeur '0000-00-00' est-ce la même chose que la valeur NULL (et donc COALESCE reste utile dans ce cas)? Encore merci... |
|
|
|
00
|
|
|
#4 | |||
![]() ![]() ![]() Antoine DinimantConsultant en Business Intelligence Inscription : octobre 2006 Messages : 5 854 ![]() |
Citation:
Citation:
Citation:
la solution peut être de remplacer tes 0 par des NULL dans la base, ou de faire la même chose dynamiquement dans la requête avec NULLIF, ou encore de faire une condition complexe avec CASE WHEN. |
|||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com