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 :

Petite question sur une requete


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Janvier 2008
    Messages
    261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 261
    Par défaut Petite question sur une requete
    Bonjour à tous,

    J'ai une requête que je ne sais réaliser.
    J'ai une table produit :
    Prod #1
    Prod#2
    ...

    Une table présence (pour savoir si le produit est présent) :
    Prod#1 ; Oui
    Prod#1 ; Oui
    Prod#2 ; Oui
    Prod#2 ; Non

    Est-il possible en une requête d'avoir pour chaque produit le nombre de présence et d'absence :
    Prod#1 ; 2(présent) ; 0 (absent)
    Prod#2 ; 1; 1


    Je pense pouvoir le faire mais avec deux sous requêtes une qui compte le nombre de Oui et l'autre qui compte le nombre de non mais il n'y a pas mieux ?

    Merci

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Une requête de ce type-là fera l'affaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
      select produit,
             sum(case choix when 'Oui' then 1 else 0 end) as nb_oui,
             sum(case choix when 'Non' then 1 else 0 end) as nb_non
        from presence
    group by produit

  3. #3
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Janvier 2008
    Messages
    261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 261
    Par défaut
    Effectivement bien moins long que ma solution !

    Merci !

  4. #4
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Janvier 2008
    Messages
    261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 261
    Par défaut Complément à cette demande
    (Re)Bonjour,

    J'ai une petite question complémentaire, j'effectue la requête suivante :

    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
     
    SELECT p.id_produit,  p.code_produit,  rp.id_reporting_prod, m.nom_mois,
       SUM(case rp.present when 'Oui' then 1 else 0 end) AS oui,
       SUM(case rp.present when 'Non' then 1 else 0 end) AS non
    FROM produit_referencement r
    CROSS JOIN mois m
    LEFT JOIN produit p ON p.id_produit=r.id_produit
    LEFT JOIN reporting_produit rp ON rp.id_produit=r.id_produit
    LEFT JOIN planning pl ON pl.id_planning=rp.id_planning  
      AND m.num_mois = EXTRACT(MONTH FROM pl.date_rdv)
     
    $critere_ens
     
    GROUP BY r.id_produit, m.id_mois
    ORDER BY p.id_produit, m.id_mois
    Ca me donne des résultats :
    Mois;ID_produit;Somme des Oui; Somme des non

    Le filtre par mois ne s'effectue pas, la somme des oui ou des non est identique pour tout les mois, mais par produit cela fonctionne.

    Je ne vois pas trop ou ça cloche, au niveau du sum je suppose ?
    Merci d'avance de votre aide.

  5. #5
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Pourquoi des jointures externes ?

    Pourquoi un produit cartésien alors qu'un peu plus loin vous avez quelque chose qui ressemble très fortement à un prédicat de jointure ?

  6. #6
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Janvier 2008
    Messages
    261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 261
    Par défaut
    Ben en fait je fais des jointures externes car je veux afficher tous les mois et toues les produits même si il n'y a pas d'entré.

    Pour la deuxième question euhh j'ai pas tout compris

    Merci.

Discussions similaires

  1. [MySQL] Petite question sur une erreur de mysql
    Par iwf-fr dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 13/12/2006, 16h23
  2. [SQL Server] Une petite aide sur une requete
    Par irenee dans le forum Langage SQL
    Réponses: 9
    Dernier message: 24/04/2006, 16h08
  3. Petite question sur une IHM
    Par beb30 dans le forum MFC
    Réponses: 12
    Dernier message: 10/04/2006, 15h19
  4. [VB2003][ACCESS] Question sur une requete
    Par Kanie dans le forum Langage SQL
    Réponses: 3
    Dernier message: 30/03/2006, 17h25
  5. petite aide sur une requete INSERT INTO
    Par bonneti dans le forum Langage SQL
    Réponses: 3
    Dernier message: 14/03/2005, 15h17

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