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

PHP & Base de données Discussion :

Compter les lignes "NULL" d'une table [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2009
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 164
    Points : 67
    Points
    67
    Par défaut Compter les lignes "NULL" d'une table
    Bonsoir,

    J'ai un soucis avec le compte de lignes NULL, je m'explique, j'ai deux tables, une première qui enregistre des distributions de feuilles, une seconde qui enregitre le retour de ces feuilles, je souhaites faire une jointure de ces deux tables et compter le nombre ligne retournées donc non vide et le nombre de lignes vide donc non retourné, voila le code que j'ai crée mais je n'arrive pas à compter les lignes vides...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT co_jour, COUNT(case retour.re_cle WHEN '>0' then commande.co_cle end)AS Distribué,
    COUNT(case retour.re_cle WHEN '0' then commande.co_cle end)AS Retourné
    FROM commande
    LEFT JOIN retour ON co_cle = re_cle
    group by co_jour
    Merci pour votre aide

  2. #2
    Membre expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Points : 3 390
    Points
    3 390
    Par défaut
    Bonjour,

    Pourquoi tu n'as pas toutes les données dans une même table ? Avec un statut de feuille distribué et/ou retournée.

    Sinon, en gardant la même structure, tu peux nous donner la structure de ta table commande et de ta table retour.

  3. #3
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Salut

    Sauf erreur, il me semble qu'il sera impossible d'obtenir une chose et son contraire à la fois.

    Le plus simple serait de faire 2 requêtes (avec JOIN OU INNER JOIN).
    Une qui ferait une jointure sur les 2 tables pour obtenir uniquement les éléments existant des 2 tables (lignes communes/liées).

    Une autre requête + sous-requête
    Exemple :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT COUNT(*) FROM table2 WHERE id_lie NOT IN (
    	SELECT t1.id_lie FROM table1 AS t1)
    GROUP BY id_lie
    Ici donc, on compte le nombre de lignes non existantes de la table 2 par rapport à la table 1.
    En espérant que cela soit ça que tu recherche.

  4. #4
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    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 799
    Points : 34 048
    Points
    34 048
    Billets dans le blog
    14
    Par défaut
    Essaie comme ça :
    Code SQL : 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
    SELECT c.co_jour, 
      SUM(
        CASE 
          WHEN r.re_cle IS NOT NULL THEN 1 
          ELSE 0
        END
      ) AS Distribué,
      SUM(
        CASE 
          WHEN r.re_cle IS NULL then 1
          ELSE 0
        END
      )AS Retourné
    FROM commande AS c
    LEFT JOIN retour AS r ON c.co_cle = r.re_cle
    GROUP BY c.co_jour

  5. #5
    Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2009
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 164
    Points : 67
    Points
    67
    Par défaut
    Merci pour vos réponses, en faite j'ai 2 tables car j'ai besoin d'avoir l'heure de distribution et l'heure de retour et il me parait plus simple de créer deux tables différentes en les reliant au besoin avec une jointure.
    La requete de cinephil est excelente elle m'a permis avec une toute petite retouche d'obtenir le résultat suivant :

    co_jour Distribué Retourné Encours
    26/02/2010 8 4 4
    27/02/2010 13 5 8
    28/02/2010 153 80 73
    01/03/2010 3 0 3

    avec le code suivant:
    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
     
    SELECT c.co_jour,  SUM(
        CASE 
          WHEN c.co_cle IS NOT NULL THEN 1 
          ELSE 0
        END
      ) AS Distribué,
      SUM(
        CASE 
          WHEN r.re_cle IS NULL then 1
          ELSE 0
        END
      )AS Retourné,
    SUM(
        CASE 
          WHEN r.re_cle IS NOT NULL THEN 1 
          ELSE 0
        END
      ) AS Encours
     
    FROM commande AS c
    LEFT JOIN retour AS r ON c.co_cle = r.re_cle
    GROUP BY c.co_jour
    Encore merci pour votre aide.....

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

Discussions similaires

  1. Afficher les lignes se trouvant pas dans une table
    Par Invité dans le forum Requêtes
    Réponses: 6
    Dernier message: 11/11/2011, 19h46
  2. Réponses: 5
    Dernier message: 18/03/2009, 19h31
  3. Compter les lignes d une <TABLE>
    Par Invité(e) dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 21/01/2005, 14h43

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