Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2578 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  problème de comptage ...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

problème de comptage ...

n°1623828
jpkerloch
Posté le 15-10-2007 à 13:38:57  profilanswer
 

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

Code :
  1. CREATE TABLE `menu` (
  2.   `menu_id` int(11) NOT NULL auto_increment,
  3.   `menu_semaine` int(9) NOT NULL default '0',
  4.   `menu_jour` varchar(10) NOT NULL default '',
  5.   `menu_entree1` varchar(100) NOT NULL default '',
  6.   `menu_entree2` varchar(100) NOT NULL default '',
  7.   `menu_entree3` varchar(100) NOT NULL default '',
  8.   `menu_entree4` varchar(100) NOT NULL default '',
  9.   `menu_resistance1` varchar(100) NOT NULL default '',
  10.   `menu_resistance2` varchar(100) NOT NULL default '',
  11.   `menu_resistance3` varchar(100) NOT NULL default '',
  12.   `menu_resistance4` varchar(100) NOT NULL default '',
  13.   `menu_resistance5` varchar(100) NOT NULL default '',
  14.   `menu_legume1` varchar(100) NOT NULL default '',
  15.   `menu_legume2` varchar(100) NOT NULL default '',
  16.   `menu_legume3` varchar(100) NOT NULL default '',
  17.   `menu_fromage1` varchar(100) NOT NULL default '',
  18.   `menu_fromage2` varchar(100) NOT NULL default '',
  19.   `menu_fromage3` varchar(100) NOT NULL default '',
  20.   `menu_dessert1` varchar(100) NOT NULL default '',
  21.   `menu_dessert2` varchar(100) NOT NULL default '',
  22.   `menu_dessert3` varchar(100) NOT NULL default '',
  23.   `menu_pc1` varchar(10) NOT NULL default '',
  24.   `menu_pc2` varchar(10) NOT NULL default '',
  25.   `menu_pc3` varchar(10) NOT NULL default '',
  26.   `menu_pc4` varchar(10) NOT NULL default '',
  27.   `menu_pc5` varchar(10) NOT NULL default '',
  28.   `admin_id` varchar(10) NOT NULL default '',
  29.   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 :  
 

Code :
  1. 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`
  2. FROM menu
  3. WHERE `menu_semaine` =42
  4. AND `admin_id` = 'kerlochj'
  5. LIMIT 0 , 30


 
apres cette requete j'obtiens ca http://www.corolle.com/video/test.JPG
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. :)

mood
Publicité
Posté le 15-10-2007 à 13:38:57  profilanswer
 

n°1623849
Alisteroid
Posté le 15-10-2007 à 13:54:36  profilanswer
 

Le mieux je pense serait de mettre à jour le nombre de plat dans une nouvelle colonne lorsque tu mets à jour une ligne.
 
Sinon, je pense à un SUM(IF....) avec une requete imbriquée.
 

n°1623854
MagicBuzz
Posté le 15-10-2007 à 13:57:58  profilanswer
 

Pas de sum ici.
 
Par contre, des IF et des + :
 
select nom, semaine, jour, if plat1 = '' then 0 else 1 end + if plat2 = '' then 0 else 1 end + ...
from latable

n°1623855
jpkerloch
Posté le 15-10-2007 à 13:58:17  profilanswer
 

le problème c'est que je ne sais pas comment faire pour faire des requete imbriqué..

n°1623856
MagicBuzz
Posté le 15-10-2007 à 13:58:20  profilanswer
 

ps : la syntaxe du "if" est ici à titre d'exemple, je ne connais pas la syntaxe sous MySQL.

n°1623858
MagicBuzz
Posté le 15-10-2007 à 14:00:25  profilanswer
 

ps² : à noter que le modèle est vraiment TRES bancle.
 
outre les plat1, plat2, etc. que je trouve très moyen, stocker le libellé des plats plutôt qu'un identifiant me semble plus que limite.
 
à mon avis, le mieux c'est de reprendre à 0 la conception de la base, et partir sur un système plus propre. d'autant que ça permettrait aisément de faire un count() au lieu d'une série de if et + qui seront impossible à maintenir.

n°1623861
jpkerloch
Posté le 15-10-2007 à 14:01:46  profilanswer
 

oué mais j'ai fais toute ma gestion de cantine sous ce format la et tout fonctionne maintenant je dois calculer combien de plat ls gens on pris .. voila tout ..

n°1623872
Alisteroid
Posté le 15-10-2007 à 14:23:07  profilanswer
 

Oui mais bon ta conception de base est foireuse .

 

Il aurait fallut faire une colonne "nom du plat" et une colonne "type de plat"(`menu_legume2` , `menu_legume3` , `menu_fromage1` , `menu_fromage2`), et non pas une colonne par type de plat... ce genre de conception amène toujours à des problemes.

 

Un count aurait fait l'affaire apres.


Message édité par Alisteroid le 15-10-2007 à 14:23:50
n°1623877
jpkerloch
Posté le 15-10-2007 à 14:28:01  profilanswer
 

je suis désolé mais je n'ai que ca et je ne vais pas tout refaire... j'ai tout mes page en php5 qui font reference a ca ..  
je dois me débrouillé avec ca ..  
alors s'il vous plait help ... :)

n°1623879
MagicBuzz
Posté le 15-10-2007 à 14:28:31  profilanswer
 

genre un gars prend deux fois le même plat (pour une raison X ou Y)
pour les plats, c'est pas très courant et généralement interdit, mais rien n'empêche de bouffer deux yaourts à la fraise


Message édité par MagicBuzz le 15-10-2007 à 14:29:09
mood
Publicité
Posté le 15-10-2007 à 14:28:31  profilanswer
 

n°1623908
anapajari
s/travail/glanding on hfr/gs;
Posté le 15-10-2007 à 14:42:18  profilanswer
 

MagicBuzz a écrit :

ps : la syntaxe du "if" est ici à titre d'exemple, je ne connais pas la syntaxe sous MySQL.


case ... when .... ( sql92 powah ;) )

MagicBuzz a écrit :

ps² : à noter que le modèle est vraiment TRES bancle.


+1, d'ailleurs ton exemple de yahourts à la fraise l'illustre parfaitement  [:klem3i1]  
 

n°1623910
jpkerloch
Posté le 15-10-2007 à 14:43:04  profilanswer
 

j'ai un controle dans mon php qui gere ca !!

n°1623920
MagicBuzz
Posté le 15-10-2007 à 14:46:38  profilanswer
 

jpkerloch a écrit :

j'ai un controle dans mon php qui gere ca !!


y fait quoi ton contrôle ?
il fait vomir le gars pour qu'il recrache son second yaourt ?

n°1623925
jpkerloch
Posté le 15-10-2007 à 14:48:45  profilanswer
 

non mais serieux, comment je pourrais faire..

n°1623936
MagicBuzz
Posté le 15-10-2007 à 14:53:35  profilanswer
 

la proprosition de sebondus n'est pas parfaite, mais permet de résoudre tous tes problèmes d'un coup : rien n'empêche d'avoir X fois un "pat2" rattaché à un même repas, et un bête count() sur les lignes de ta table te permettra de savoir combien de plats ont été mangés dans un repas.
 
niveau code, ça ne devrait pas impliquer énormément de modifications (quelques insert à éclater et autres modifs tout de mêmes)

n°1623998
jpkerloch
Posté le 15-10-2007 à 15:33:21  profilanswer
 

je sais mais comment je pourrais faire concretement , je ne suis mec qui fait des requetes de base .. alors si vous pouviez m'aider ca serai vraiment sympas de votre part ..
Merci

n°1624219
moi23372
Posté le 15-10-2007 à 21:38:47  profilanswer
 

on te la dit, ta base de données est pourrie, pas normalisée.  
Alors on te donne une solution pour avoir un truc propre, pas pour faire du marteau burin.  
Maintenant, si personne à envie de t'aider parce que tu n'en fait qu'a ta tête, il faut alors t'en prendre à toi même.  
 
Si tu veux vraiment que ton application soit utilisée, refait ta base de donnée, et modifie tes quelques requêtes pour te calquer sur le nouveau modèle de données. surtout qu'ici tu n'as qu'une table. Donc tes modifs, c'est une histoire d'une petite demi heure.  
 

n°1624339
jpkerloch
Posté le 16-10-2007 à 08:27:01  profilanswer
 

je veux bien modifier mais le probleme c'est que j'ai pas pas grand chose comme notion en sql ni en php. c'est pour ca que j'ai fais comme ca .. croyant que c'etait bien..
mais bon ..

n°1624910
moi23372
Posté le 16-10-2007 à 18:56:20  profilanswer
 

si tu décides de repartir sur une bonne base, je suis certains que tu trouveras très facilement de l'aide.  
De plus, modifier ta base ne signifie pas complexifier ton code ni l'sql. ça reste relativement basic et simple.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  problème de comptage ...

 

Sujets relatifs
Probleme avec GetFileSecurityProbleme de charset
[Actionscript/Flash] Probleme de son qui demare automatiquementProbleme avec mes div
[RESOLU] problème d'heure dans requête mysql (heure d'hiver)Problème incroyable de compatibilité avec IE7
probleme de noob .. ping et batchproblème de comptage
Etats dans access : probleme de comptage de champs videsproblème de comptage avec mysql... (résolu)
Plus de sujets relatifs à : problème de comptage ...


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR