|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre chevronné
![]() ![]() Inscription : juillet 2006 Messages : 1 194 ![]() |
Bonjour.
J'aimerais récupérer d'une table la valeur minimale d'une colonne parmi certaines lignes. S'il n'y a aucune ligne je ne souhaite pas de résultat. Pourtant le comportement de MIN (à l'instar de MAX) est de renvoyer un résultat NULL. Y a-t'il une façon futée de se débarrasser des lignes ? Code :
|
||
|
|
00
|
|
|
#2 |
|
Membre chevronné
![]() Administrateur de base de données Inscription : août 2009 Messages : 404 ![]() |
Après le GROUP BY vous avez essayé HAVING MIN(col) IS NOT NULL ?
Suivant la version de MySQL ça ne passera peut-être pas. Donc dans la clause SELECT utilisez COALESCE() pour remplacer NULL par une valeur arbitraire avant de l'exclure avec HAVING. C'est parfois complexe de manipuler NULL. A+ |
|
|
00
|
|
|
#3 | |
|
Membre chevronné
![]() ![]() Inscription : juillet 2006 Messages : 1 194 ![]() |
Citation:
En fait, je crois qu'il suffit d'avoir Il faut bien entendu J'ai bien dit "je crois", il suffit peut-être d'avoir une clause GROUP BY sur un sous ensemble des colonnes des tables. EDIT: |
|
|
|
00
|
|
|
#4 |
![]() ![]() |
J'ai beau relire ta prose et ta requête, je ne comprends pas ton besoin !
Tu peux expliquer plus clairement ce que tu cherches à faire ?
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|
00
|
|
|
#5 | ||||
|
Membre chevronné
![]() ![]() Inscription : juillet 2006 Messages : 1 194 ![]() |
Code :
Code :
|
||||
|
|
00
|
|
|
#6 |
![]() ![]() |
Ton besoin n'est toujours pas expliqué et tes requêtes sont fausses mais si tu as marqué résolu tu n'as peut-être plus besoin d'aide ?
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|
00
|
|
|
#7 |
|
Membre chevronné
![]() ![]() Inscription : juillet 2006 Messages : 1 194 ![]() |
Mes requêtes sont fausses ? O_o
Pourrais-je savoir en quoi ? |
|
|
00
|
|
|
#8 | |
![]() ![]() |
Citation:
Donc quand tu dis que ta première requête renvoie une ligne, c'est faux ! Tu as résolu ton problème ou pas ?
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|
|
00
|
|
|
#9 | |||||
|
Membre chevronné
![]() ![]() Inscription : juillet 2006 Messages : 1 194 ![]() |
Citation:
Je t'en prie essaie donc ceci : Code :
Code :
|
|||||
|
|
00
|
|
|
#10 | |
![]() ![]() |
OK, la première requête donne un résultat mais c'est à mon avis une bizarrerie supplémentaire de MySQL ou l'application d'une logique bizarre du genre p => q qui donne toujours vrai si p est faux.
La deuxième ne donne rien parce que le SGBD ne peut pas faire de regroupement sur un truc qui n'existe pas. Pas de regroupement => pas de résultat. À part ça, Citation:
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|
|
00
|
|
|
#11 |
|
Membre chevronné
![]() ![]() Inscription : juillet 2006 Messages : 1 194 ![]() |
Faux.
C'est la clause where qui fait qu'il n'y a pas de résultat. Le "group by" affecte le comportement d'agrégation et donc MIN. Tu peux essayer sans clause WHERE tu auras un résultat. Par ailleurs, ce n'est pas une bizarrerie, par exemple ça fonctionne aussi ainsi sous SQL Server. Il était tard quand j'ai posté. |
|
|
00
|
|
|
#12 |
![]() ![]() |
Si c'est, comme je le supposais à l'origine, la clause WHERE qui fait qu'il n'y a pas de résultat à la seconde requête, ça devrait aussi être le cas pour la première !
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|
00
|
|
|
#13 | |
|
Membre chevronné
![]() ![]() Inscription : juillet 2006 Messages : 1 194 ![]() |
Citation:
Mais en fait, ça va un peu de paire avec COUNT duquel on attend un résultat, dont 0 quand il n'y a pas de ligne. Donc, c'est cohérent même si ça peut surprendre. (à essayer en ORACLE et DB2 aussi, pour voir) |
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com