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 :

requete qui ne fonctionne pas comme je shouterais


Sujet :

Requêtes MySQL

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 21
    Points : 19
    Points
    19
    Par défaut requete qui ne fonctionne pas comme je shouterais
    Bonjour a toute la communauté ....

    voila ma requette:

    SELECT dateS,
    IF (STATUS = "Push", count(STATUS ) , 0) AS 'Push',
    IF (STATUS = "OK", count(STATUS ) , 0) AS 'OK'
    FROM test
    GROUP BY dateS
    LIMIT 0 , 30

    cette requete fonctionne, elle me renvois des resultats, sauf qu'il sont incohérent vace le contenu de ma base ...

    exemple de ce que MySQL me renvoit:


    date | push | ok
    2007-03-29 | 248 | 0
    2007-04-02 | 8 | 0


    le pb est que lorsque j effectue la requete suivante:
    SELECT *
    FROM test
    WHERE dates = '2007-03-29' AND
    STATUS = 'ok'

    MYsql ME RENVOIT 17 occurences ... ce qui est incohérent avec la requete précedente ...

    d'ou cela pourais venir?

  2. #2
    Membre éprouvé
    Avatar de Sivrît
    Profil pro
    Inscrit en
    Février 2006
    Messages
    953
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2006
    Messages : 953
    Points : 1 249
    Points
    1 249
    Par défaut
    C'est normal. Pour un groupe de dateS, STATUS ne doit pas être constant. Lors du calcul du résultat pour un groupe, l'expression est évaluée avec les valeurs d'une ligne de ce groupe (on ne sait pas laquelle). Donc le IF se fait avec UN STATUS et si par chance c'est un "Push" on affiche le compte du nombre d'éléments dans ce groupe.

    La requête voulue serait plutôt:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    SELECT dateS,
           SUM(IF(STATUS = "Push", 1 , 0)) AS 'Push',
           SUM(IF(STATUS = "OK", 1 , 0)) AS 'OK'
    FROM test
    GROUP BY dateS
    LIMIT 0 , 30
    ou plus concis (mais je crois spécifique à MySQL):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    SELECT dateS,
           SUM(STATUS = "Push") AS 'Push',
           SUM(STATUS = "OK") AS 'OK'
    FROM test
    GROUP BY dateS
    LIMIT 0 , 30

Discussions similaires

  1. [MySQL] Un formulaire qui ne fonctionne pas comme il faut (problèmes avec stripslashes & com)
    Par vincent.b dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 30/04/2007, 21h02
  2. requete qui ne fonctionne pas
    Par gregal dans le forum Requêtes
    Réponses: 2
    Dernier message: 03/04/2007, 17h19
  3. un if qui ne fonctionne pas comme je veux
    Par Kelly182 dans le forum Access
    Réponses: 4
    Dernier message: 27/07/2006, 16h12
  4. Requete qui ne fonctionne pas sur toutes les versions de MySQL
    Par goldorax113 dans le forum Requêtes
    Réponses: 2
    Dernier message: 06/06/2006, 12h04
  5. Requete qui ne fonctionne pas chez l'hebergeur
    Par Derik dans le forum Requêtes
    Réponses: 4
    Dernier message: 05/06/2006, 03h35

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