IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes MySQL Discussion :

MIN et NULL : j'en veux pas


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé

    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 448
    Par défaut MIN et NULL : j'en veux pas
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    NSERT `Players` (
    	`tableID`
    	, `userID`
    	, `seat`
    	, `joinedOn`
    )
    SELECT
    	1
    	, 1
    	, MIN(`n`)
    	, NOW()
    FROM `Tables` AS TBL

  2. #2
    Membre émérite Avatar de Oishiiii
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2009
    Messages
    508
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Août 2009
    Messages : 508
    Par défaut
    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+

  3. #3
    Membre éprouvé

    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 448
    Par défaut
    Citation Envoyé par Oishiiii Voir le message
    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+
    Le rapprochement entre les deux sujets est fallacieux mais ça me fait rire quand même

    En fait, je crois qu'il suffit d'avoir sélectionné au moins une colonne (ou une expression on agrégé sur la colonne) qui provienne directement des tables pour que la ligne n'apparaisse pas (MIN(...) = NULL, passe encore mais TBL.`id` = NULL serait une aberration).
    Il faut bien entendu
    le GROUP BY qui va avec cette colonne.

    Si aucune colonne n'est utile, on peut faire un truc moche genre SELECT ..., CASE WHEN 1 = 1 THEN valeur ELSE macolonnedumemetype END, ... FROM ... GROUP BY macolonnedumemetype.

    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: Je crois je sais

  4. #4
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    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 Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « 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 la suite Linux Mageïa !

  5. #5
    Membre éprouvé

    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 448
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    SELECT
    	1
    	, 1
    	, MIN(`n`)
    	, NOW()
    FROM `Tables` AS TBL
    WHERE 'moncul' = 'poulet'
    Renvoie une ligne.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    SELECT
    	TBL.`id`
    	, 1
    	, MIN(`n`)
    	, NOW()
    FROM `Tables` AS TBL
    WHERE 'moncul' = 'poulet'
    GROUP BY TBL.`id`
    Ne renverra pas de ligne.

  6. #6
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    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 Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « 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 la suite Linux Mageïa !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 07/11/2005, 15h38
  2. XPManifest Delphi 2005 VCL : je veux pas qu'il se manifeste
    Par Harry dans le forum Composants VCL
    Réponses: 11
    Dernier message: 28/09/2005, 11h16
  3. Kmail veux pas marcher sur mon serveur avec postfix
    Par jean christophe dans le forum Réseau
    Réponses: 4
    Dernier message: 06/05/2005, 01h02
  4. Réponses: 9
    Dernier message: 12/01/2005, 17h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo