|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | |
|
Membre confirmé
![]() Inscription : avril 2002 Messages : 341 ![]() |
Bonjour,
je cherche un moyen pour qu'en une seule requête j'aie toujours une valeur retournée. Voici un exemple : Citation:
Mais imaginons que je veuille la valeur pour NUM = 1 et ID = 42, mais que si ID = 42 n'existe pas, je veuille retourner la valeur pour ID = 0 Code :
SELECT ID, VALEUR FROM T WHERE NUM = 1 AND (ID = 42 OR ID = 0) ORDER BY ID DESC LIMIT 1 Comment faire ? faut-il obligatoirement faire plusieurs requêtes ? |
|
|
|
00
|
|
|
#2 | ||
|
Membre Expert
![]() ![]() Inscription : janvier 2010 Messages : 1 084 ![]() |
Bonjour
Essayez quelque chose comme ceci : Code sql :
|
||
|
|
20
|
|
|
#3 |
|
Membre confirmé
![]() Inscription : avril 2002 Messages : 341 ![]() |
Super ! merci beaucoup ! c'est terrible !
|
|
|
00
|
|
|
#4 |
|
Invité de passage
![]() Inscription : décembre 2010 Messages : 12 ![]() |
tu as aussi
ifnull(ton_champs,valeur_retournée_si_null) |
|
|
00
|
|
|
#5 |
|
Membre confirmé
![]() Inscription : avril 2002 Messages : 341 ![]() |
Bonjour,
je suis désolé de rouvrir ce post, mais en fait j'ai une évolution de ma requête. En effet, la requête que aieeeuuuuu m'a donné fonctionne très bien, pour retourner la valeur pour id = 0 si ligne id = X n'existe pas. Mais en fait voici ce que je dois faire : si je demande la valeur pour id = X, il faut que je retourne la valeur pour id = X - 1, si existant, sinon pour id = X - 2, etc, jusqu'à arriver finalement par id = 0. Donc je cherche à avoir pour id = X la valeur existante la plus proche, ou la valeur par défaut (id = 0), et toujours en évitant de devoir faire plusieurs requête pour les différentes valeurs de num. Es-ce possible ? Merci d'avance. |
|
|
00
|
|
|
#6 | ||
|
Membre émérite
![]() Développeur informatique Inscription : juin 2004 Messages : 697 ![]() |
Pour avoir la plus grande id inférieure ou égale a [n] :
D'où ta requête : Code :
__________________
Roland |
||
|
|
00
|
|
|
#7 | ||
|
Membre confirmé
![]() Inscription : avril 2002 Messages : 341 ![]() |
Hélas, cette requête semble trop simple :
Code :
si je demande pour ID = 2 je veux : Mais si je demande pour ID = 50 : je veux : |
||
|
|
00
|
|
|
#8 |
|
Membre Expert
![]() ![]() Inscription : janvier 2010 Messages : 1 084 ![]() |
Quel est ton SGBDR ?
|
|
|
00
|
|
|
#9 |
|
Membre confirmé
![]() Inscription : avril 2002 Messages : 341 ![]() |
H2, Java en mémoire sans serveur.
|
|
|
00
|
|
|
#10 | |
|
Membre émérite
![]() Développeur informatique Inscription : juin 2004 Messages : 697 ![]() |
Citation:
__________________
Roland |
|
|
|
00
|
|
|
#11 |
|
Membre Expert
![]() ![]() Inscription : janvier 2010 Messages : 1 084 ![]() |
|
|
|
00
|
|
|
#12 |
|
Membre confirmé
![]() Inscription : avril 2002 Messages : 341 ![]() |
oui tout à fait, pour chaque valeurs distincte de la colonne NUM, j'ai du m'embrouiller moi même dans mes explications
En fait la première proposition était bonne, mais en fait il faut rajouter une clause avant de prendre la valeur par défaut. |
|
|
00
|
|
|
#13 | ||
|
Membre Expert
![]() ![]() Inscription : janvier 2010 Messages : 1 084 ![]() |
Cette requete doit fonctionner :
Code sql :
|
||
|
|
10
|
|
|
#14 | ||
|
Membre émérite
![]() Développeur informatique Inscription : juin 2004 Messages : 697 ![]() |
Et ça, qu'est-ce que ça donne ?
Code :
__________________
Roland |
||
|
|
00
|
|
|
#15 |
|
Membre confirmé
![]() Inscription : avril 2002 Messages : 341 ![]() |
Niquel ! encore plus fort qu'avant !
Vous êtes géniaux ! vive developpez.com ! Merci.
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com