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 :

problème de comptage


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 18
    Par défaut problème de comptage
    Bonjour,

    Voila je suis coincé dans mon développement, j'ai ma table qui se trouve sous cette forme..

    CREATE TABLE `menu` (
    `menu_id` int(11) NOT NULL auto_increment,
    `menu_semaine` int(9) NOT NULL default '0',
    `menu_jour` varchar(10) NOT NULL default '',
    `menu_entree1` varchar(100) NOT NULL default '',
    `menu_entree2` varchar(100) NOT NULL default '',
    `menu_entree3` varchar(100) NOT NULL default '',
    `menu_entree4` varchar(100) NOT NULL default '',
    `menu_resistance1` varchar(100) NOT NULL default '',
    `menu_resistance2` varchar(100) NOT NULL default '',
    `menu_resistance3` varchar(100) NOT NULL default '',
    `menu_resistance4` varchar(100) NOT NULL default '',
    `menu_resistance5` varchar(100) NOT NULL default '',
    `menu_legume1` varchar(100) NOT NULL default '',
    `menu_legume2` varchar(100) NOT NULL default '',
    `menu_legume3` varchar(100) NOT NULL default '',
    `menu_fromage1` varchar(100) NOT NULL default '',
    `menu_fromage2` varchar(100) NOT NULL default '',
    `menu_fromage3` varchar(100) NOT NULL default '',
    `menu_dessert1` varchar(100) NOT NULL default '',
    `menu_dessert2` varchar(100) NOT NULL default '',
    `menu_dessert3` varchar(100) NOT NULL default '',
    `menu_pc1` varchar(10) NOT NULL default '',
    `menu_pc2` varchar(10) NOT NULL default '',
    `menu_pc3` varchar(10) NOT NULL default '',
    `menu_pc4` varchar(10) NOT NULL default '',
    `menu_pc5` varchar(10) NOT NULL default '',
    `admin_id` varchar(10) NOT NULL default '',
    PRIMARY KEY (`menu_id`)
    Ensuite j'ai tout plein de valeurs dedans. Ce que j'aimerai c'est faire des calculs avec plusieurs requettes.
    Je m'explique, j'aimerai avoir le nombre de plat que l'utilisateur "lamba" a pris pour une semaine donnée.

    Voici la premiere requette que j'arrive a avoir :

    SELECT `admin_id` , `menu_semaine` , `menu_jour` , `menu_entree1` , `menu_entree2` , `menu_entree3` , `menu_entree4` , `menu_resistance1` , `menu_resistance2` , `menu_resistance3` , `menu_resistance4` , `menu_resistance5` , `menu_legume1` , `menu_legume2` , `menu_legume3` , `menu_fromage1` , `menu_fromage2` , `menu_fromage3` , `menu_dessert1` , `menu_dessert2` , `menu_dessert3`
    FROM menu
    WHERE `menu_semaine` =42
    AND `admin_id` = 'kerlochj'
    LIMIT 0 , 30

    apres cette requete j'obtiens ca

    Mais une fois que j'ai cette requette je dois calculer le nombre de plats qu'il a pris:

    c'est a dire que je dois obtenir :

    Kerlochj | 42 |Lundi | 5
    Kerlochj | 42 |Mardi | 5
    kerlochj | 42 |Mercredi | 5

    Je pense qu'il faut faire une requete imbriquer avec en premier condition la premiere requete et la seconde requete avec du count ou du som mais la probleme c'est que je sais pas trop faire..

    Merci de votre aide.

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 135
    Par défaut
    En précisant le SGBD que vous utilisez et sa version, les réponses proposées seront adaptées aux spécificités et limitations de celui-ci.
    Règles du forum Langage SQL à lire par tous

    Pour le comptage, un enchaînement de CASE devrait suffire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT ...
          , CASE WHEN TRIM(menu_entree1) = '' THEN 0 ELSE 1 END
          + CASE WHEN TRIM(menu_entree2) = '' THEN 0 ELSE 1 END
    ...
          + CASE WHEN TRIM(menu_pc5) = '' THEN 0 ELSE 1 END AS nb_plats
    ...
    Toutefois, je ne suis pas certain que la structure de la table soit optimale...
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 18
    Par défaut
    Mon SGBD est un sql avec la derniere version ..
    sinon pourrais m'écrire la requete au complet parce que je ne connais que les requetes de base..
    Merci

  4. #4
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 135
    Par défaut
    Citation Envoyé par toxic_37 Voir le message
    Mon SGBD est un sql avec la derniere version ..
    SQL est un langage de programmation normalisé utilisé par de nombreux SGBD.
    Plusieurs SGBD comportent SQL dans leur nom (SQL Server, MySQL, PostgresSQL, SQLite, ...), dautres non (Oracle, Sybase, DB2, ...) ce qui ne les empèche pas d'adhérer à cette norme, même si peu d'entre eux la respectent intégralement.
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 18
    Par défaut
    Sorry c'est du MySQL version 4.1.7

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 18
    Par défaut
    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 menu_jour, ( 
         IF(menu_entree1 = '', 0, 1) 
       + IF(menu_entree2 = '', 0, 1) 
       + IF(menu_entree3 = '', 0, 1) 
       + IF(menu_entree4 = '', 0, 1) 
       + IF(menu_resistance1 = '', 0, 1) 
       + IF(menu_resistance2 = '', 0, 1) 
       + IF(menu_resistance3 = '', 0, 1) 
       + IF(menu_resistance4 = '', 0, 1) 
       + IF(menu_resistance5 = '', 0, 1) 
       + IF(menu_legume1 = '', 0, 1) 
       + IF(menu_legume2 = '', 0, 1) 
       + IF(menu_legume3 = '', 0, 1) 
       + IF(menu_fromage1 = '', 0, 1) 
       + IF(menu_fromage2 = '', 0, 1) 
       + IF(menu_fromage3 = '', 0, 1) 
       + IF(menu_dessert1 = '', 0, 1) 
       + IF(menu_dessert2 = '', 0, 1) 
       + IF(menu_dessert3 = '', 0, 1) 
    ) AS total 
    FROM menu 
    WHERE admin_id ='kerlochj'
    AND menu_semaine = 42

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

Discussions similaires

  1. Petit problème de comptage
    Par toine38 dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 08/01/2008, 09h41
  2. Problème de comptage sur des dates
    Par Oberown dans le forum Langage SQL
    Réponses: 3
    Dernier message: 12/04/2007, 17h04
  3. Problème de comptage
    Par gunnm18 dans le forum Langage
    Réponses: 12
    Dernier message: 16/06/2006, 09h44
  4. [VBA-E]Problème de comptage
    Par Mirx1 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 24/05/2006, 10h25
  5. [MySql] Problème de comptage
    Par Oberown dans le forum Langage SQL
    Réponses: 3
    Dernier message: 13/02/2006, 05h44

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