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

Langage SQL Discussion :

mon select count(*) marche pas


Sujet :

Langage SQL

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    332
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 332
    Points : 104
    Points
    104
    Par défaut mon select count(*) marche pas
    Bonjour

    Je souhaite faire 1 requete qui comptabilise les lignes repondant a mes criteres

    Voila la requete:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT Count(*) AS Total
    FROM TNotes
    WHERE Score_num1=1
    AND CodeConnaissance LIKE ( '%04');
    Voila la table (une partie):
    CodeConnaissance---Nbre_rep---Score_num1---Score_num2
    001CON05------------------0-------------3-----------------3
    002CON04------------------0-------------2-----------------3
    003CON04------------------0-------------1-----------------3
    004CON05------------------0-------------3-----------------3
    005CON04------------------0-------------1 ----------------3
    006CON04------------------0-------------3-----------------1

    Je m'attendais comme resultat a 2 et pourtant j'ai tjs 0
    ou est mon erreur?
    merci

  2. #2
    Membre habitué Avatar de Cobaye
    Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    120
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 120
    Points : 154
    Points
    154
    Par défaut
    et :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT Count(CodeConnaissance) AS Total 
    FROM TNotes 
    WHERE Score_num1=1 
    AND CodeConnaissance LIKE ( '%04');

  3. #3
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut Re: mon select count(*) marche pas
    1) Enlève les parenthèses autour de '%04'
    2) Vérifie qu'il n'y a pas de caractères ' ' (espace) à la fin de CodeConnaissance
    3) Essaye (pour voir les problèmes, pas pour résoudre)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT * AS Total
    FROM TNotes
    WHERE Score_num1=1
    AND CodeConnaissance LIKE  '%04%';

  4. #4
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Points : 1 775
    Points
    1 775
    Par défaut
    zorba49 : j'ai copié / collé ta requête dans une table que j'ai créé et elle m'a retourné 2 comme attendu.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    332
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 332
    Points : 104
    Points
    104
    Par défaut
    et ben j'ai essayé tout ce que vous m'avez proposé et j'ai tjs 0
    qd je fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT * AS Total 
    FROM TNotes 
    WHERE Score_num1=1 
    AND CodeConnaissance LIKE  '%04%';
    pour tester j'ai 1 ligne vierge

    je comprend rien du tout!

  6. #6
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Points : 1 775
    Points
    1 775
    Par défaut
    A mon avis tu recherches des enregistrements avec un LIKE '%04%' alors que tes champs doivent contenir '...O4...' et non un zéro.

    Tu peux tester les commandes suivantes et me dire ce que retourne la dernière requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    CREATE TABLE TMP (
        CodeConnaissance VARCHAR(25),
        Nbre_rep VARCHAR(25),
        Score_num1 VARCHAR(25),
        Score_num2 VARCHAR(25)
    );
     
    INSERT INTO TMP
    VALUES ('001CON05', '0', '3', '3');
    INSERT INTO TMP
    VALUES ('002CON04', '0', '2', '3');
    INSERT INTO TMP
    VALUES ('003CON04', '0', '1', '3');
    INSERT INTO TMP
    VALUES ('004CON05', '0', '3', '3');
    INSERT INTO TMP
    VALUES ('005CON04', '0', '1', '3');
    INSERT INTO TMP
    VALUES ('006CON04', '0', '3', '1');
     
    SELECT Count(*) AS Total 
    FROM TMP
    WHERE Score_num1=1 
    AND CodeConnaissance LIKE ( '%04');

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    332
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 332
    Points : 104
    Points
    104
    Par défaut
    j'ai bien créé ta table et mis les valeurs
    et le resultat de la requête est ... tjs 0 !!

  8. #8
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Points : 1 775
    Points
    1 775
    Par défaut
    ça y est je suis complètement largué 8)

    Par contre si tu veux encore tenter une dernière chose : j'avais oublié de modifier la requête avec les propositions de Médiat et Cobaye alors peut être que cette requête retournera le résultat attendu :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT COUNT(*) AS Total 
    FROM TNotes 
    WHERE Score_num1=1 
    AND CodeConnaissance LIKE '%04%';

  9. #9
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Points : 4 644
    Points
    4 644
    Par défaut
    tu mets score_num1 =1 mais c'est pas score_num1 ='1'?
    ce sont des varchars

  10. #10
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Points : 1 775
    Points
    1 775
    Par défaut
    oui oui pardon mais pour me simplifier la vie lors de mes tests j'ai mis tous les attributs en VARCHAR

  11. #11
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Points : 4 644
    Points
    4 644
    Par défaut
    oui mais c'est normal que la requete retourne rien

  12. #12
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Points : 4 644
    Points
    4 644
    Par défaut
    si avec l'exemple de Magnus ,ceci ne retourne pas 2, je ne sais pas quoi penser:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    SELECT Count(*) AS Total 
    FROM TMP 
    WHERE Score_num1='1' 
    AND CodeConnaissance LIKE ( '%04');

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    332
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 332
    Points : 104
    Points
    104
    Par défaut
    ben ca alors!!!
    ds access j'ai beau tout essayer (Score_num1='1') ca me donne tjs 0

    MAIS
    ds ma page asp qd je fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Function consolidation()
    Dim sql,rst,code
    code="%"&"04"
    sql = "SELECT Count(*) FROM TNotesConnaissancePerm WHERE Score_num1=1  And CodeConnaissance LIKE '" & DoublerApostrophe(code) & "'"
    Set rst=Application("cnx").Execute(sql)
    consolidation=rst
    end function
    j'ai bien
    <%=consolidation()(0)%> qui me donne 2 !!!!

    ca marche ds asp et pas ds access

    mais bon ca marche ds asp

  14. #14
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    956
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 956
    Points : 1 199
    Points
    1 199
    Par défaut
    Bonjour,
    Je crois que dans Access le caractère joker est l'étoile * et non le caractère pourcent %, ce qui pourrait expliquer ton problème.
    Est-ce que dans Access
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT Count(*) 
    FROM TNotesConnaissancePerm 
    WHERE Score_num1=1  
            And CodeConnaissance LIKE '*04'
    marche?
    En revanche lorsque tu passes par une couche oledb c'est bien %

    Comme quoi ce n'est pas pour rien que dans les règles du forum il est spécifier qu'il faut indiquer son SGBD.
    A+
    soazig

  15. #15
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Points : 1 775
    Points
    1 775
    Par défaut
    soazig : tu dois avoir raison car SQLpro explique justement que l'opérateur LIKE a un comportement différent sous Access par rapport aux autres SGBD
    -> cf l'opérateur LIKE dans les différents SGBD (la légende du tableau se trouve en haut du document).

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

Discussions similaires

  1. [VBA-E] mon code ne marche pas sur un autre PC
    Par yannph dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 09/01/2006, 21h03
  2. mon select ne marche pas.
    Par Aurèl90 dans le forum Requêtes et SQL.
    Réponses: 16
    Dernier message: 01/12/2005, 15h59
  3. [CSS] Une partie de mon CSS ne marche pas sous IE
    Par YanK dans le forum Mise en page CSS
    Réponses: 6
    Dernier message: 28/10/2005, 17h58
  4. Tcsh - Mon script ne marche pas
    Par Aramis dans le forum Linux
    Réponses: 5
    Dernier message: 13/05/2004, 18h26
  5. [IB71] mon Blob ne marche pas correctement
    Par BoeufBrocoli dans le forum InterBase
    Réponses: 2
    Dernier message: 17/09/2003, 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