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

VB.NET Discussion :

Procédure SQL ne fonctionne pas


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 126
    Par défaut Procédure SQL ne fonctionne pas
    Bonjour,

    Je suis en train de faire une application de gestions de données à partir de visual studio. J'ai réussi à établir une connexion à la base sur mySQL.

    Par contre, la séquence SQL que j'essai de mettre en place ne fonctionne pas. Je souhaite afficher le nombre d'enregistrements groupés par le champs "locatlisation" mais sans faire apparaître ce qui sont vide.

    J'ai écrit :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT T_Films.Localisation, Count(T_Films.Localisation) AS CompteDeLocalisation
                                    FROM T_Films
                                    GROUP BY T_Films.Localisation
                                    HAVING (((T_Films.Localisation) Is Not Null))
                                    ORDER BY T_Films.Localisation



    Cela me fait apparaître les résultats comme voulu sauf que s'il y a des vides dans ce champ "localisation", ils sont également comptabilisé et apparaissent dans mon résultat. A noter que si je met cette SQL dans une base Access, cela fonctionne correctement.
    Est-ce que j'ai oublié quelque chose ?

    Merci pour votre aide

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 126
    Par défaut
    J'ai un début de réponse. En fait je passe par phpMyAdmin utilisé sur mon NAS. Il n'y a pas la possibilité de mettre IS NOT NULL.
    Mais du coup, je ne sais pas comment faire.

  3. #3
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Bonsoir,

    Je ne suis pas sûr de bien comprendre la finalité de ta requête, mais j'essaierais celle-ci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT T_Films.Localisation, Count(T_Films.Localisation) AS CompteDeLocalisation
                                    FROM T_Films
    WHERE  (((T_Films.Localisation) Is Not Null))
                                    GROUP BY T_Films.Localisation          
                                    ORDER BY T_Films.Localisation
    Sous Access, les résultats de cette requête sont un peu différents de ceux obtenus avec ta requête.
    Il me semble qu'avec ta requête, les enregistrements contenant le champ vide n'apparaissent pas dans le résultat affiché mais ils sont comptés dans CompteDeLocalisation.
    Avec ma requête, ces enregistrements n'apparaissent pas mais ne sont pas comptés non plus.

    J'espère que ceci t'aidera ...

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 126
    Par défaut
    Bonjour et merci pour cette réponse,
    Malheureusement, cela ne fonctionne pas, les champs vides sont toujours comptabilisés et apparaissent.
    En fait, le but de cette application est d'avoir une liste de mes DVD/Blu-Ray qui sont situé un peu partout dans la maison (chambre, salon). Lorsque je consulte cette liste, cela me permet de savoir où trouver le film recherché.
    Le but de comptabiliser est surtout d'avoir un aperçu et où. Aucune valeur ajoutée mais à développer quelque chose, autant tenter des choses
    Et oui, il peut arriver que ce champs soit vide car lorsqque j'emprunte un film pour le voir, je l'enregistre dans cette liste pour savoir ce que j'ai vu mais je ne lui attribue pas un emplacement puisque je le rend à son proprio.

    Je pense que le problème vient du fait que NULL n'existe pas dans phpMyAdmin que j'utilise pour ma base de données sur mon NAS. J'ai tenté d'écrire cette procédure SQL directement dans cette application et je ne trouve rien d'équivalent. Je vais essayé de trouver autre chose, sinon tans pis.

    Encore merci pour votre aide

  5. #5
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Je comprends.
    A défaut de NULL, cela ne peut-il fonctionner avec la comparaison à une chaîne vide ?
    ..... (((T_Films.Localisation) > '')).......
    Attention, j'ai mis 2 apostrophes, pas un guillemet.
    Bonne journée....

  6. #6
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Suite ...


    Je me suis réinstallé un MySql et j'ai testé.
    La comparaison sur la chaine vide fonctionne.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT T_Films.Localisation, Count(T_Films.Localisation) AS CompteDeLocalisation
                                    FROM T_Films
    WHERE  (((T_Films.Localisation) > ''))
                                    GROUP BY T_Films.Localisation          
                                    ORDER BY T_Films.Localisation
    Bon codage ....

  7. #7
    Membre Expert Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 573
    Par défaut
    Bonjour,
    Pour information le Group By consomme beaucoup de ressources, donc on utilisera le Having uniquement pour ce qui concerne le Group By par exemple:
    Having count(champ)>2.

    Pour le reste on utilisera une Close Where avant le Group By pour empêcher le Group By de traiter les informations inutile comme Phil Rob la fait dans le poste précédent.

    Imagine que nous voulions compter le nombre d'enfants de moins de 18 ans sur l'île de France.

    On utiliserait une Close Where pour filtrer la population concernée avant d'intégrer la population mondiale à notre comptage !

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 126
    Par défaut
    Merci à tous pour ces explications,
    Effectivement, la solution proposée par Phil Rob fonctionne, impec !

    A bientôt

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 02/02/2009, 17h01
  2. Union sql ne fonctionne pas ?
    Par chapeau_melon dans le forum WinDev
    Réponses: 10
    Dernier message: 13/11/2007, 10h50
  3. [MySQL] Ma requête SQL ne fonctionne pas
    Par fabrice88 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 02/01/2007, 12h41
  4. [SQL] PB : Jointure SQL ne fonctionne pas..
    Par guillaumeIOB dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 13/09/2006, 14h03

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