Somme en sql

layork Messages postés 364 Statut Membre -  
 Siiim -
re coucou!!!

je vous explique le probleme:
en fait j'ai dans ma base un champs duree de type TIME
et en fait, je voudrais simplement savoir comment on fait une requete qui donnerais la somme des durées
un truc dans ce genre:

$somme="SELECT SUM FROM appels WHERE 1 AND nom_diplomat LIKE '$nom_diplomat' AND dates LIKE '$date'
AND dates BETWEEN '$date1' AND '$date2' ";

l'informatique ca rend fou!!!!!

10 réponses

  1. Siiim
     
    Salut,

    J'ai eu le même genre de soucis, en fait tu passer par des fonction MySQL :
    TIME_TO_SEC(tonchamptime) -> renvoie la valeur de ton champ HH:MM:SS en seconde
    et l'inverse
    SEC_TO_TIME(valeurenseconde) -> renvoie HH:MM:SS d'une valeur en seconde

    Avec ça tu peux combiner une somme : si tu veux ajouter 2 champs de temps :
    SELECT SEC_TO_TIME(SUM(TIME_TO_SEC(champ1) + TIME_TO_SEC(champ2))) FROM table

    Cela te renverra un HH:MM:SS de la somme de tes deux champs

    Ensuite si tu ne veux que l'heure et les minutes, tu peux utiliser HOUR(tonchamp) et MINUTE(tonchamp)

    Donc si tu l'appliques à la requete ci dessus, ça devrai donner un truc dans le genre :
    SELECT HOUR(SEC_TO_TIME(SUM(TIME_TO_SEC(champ1) + TIME_TO_SEC(champ2)))),
    MINUTE(SEC_TO_TIME(SUM(TIME_TO_SEC(champ1) + TIME_TO_SEC(champ2))))
    FROM table

    Pour info, il existe aussi des fonctions MySQL pour calculer la différence entre deux date : DATEDIFF et entre deux time : TIMEDIFF (cherchez sur le net).

    Voilà,
    bon courage à tous,

    Simon.
    3
  2. sebsauvage Messages postés 33284 Date d'inscription   Statut Modérateur Dernière intervention   15 684
     
    mm... a priori un champ de type TIME ne contient pas une durée mais une date. C'est pas la même chose.

    durée = différence entre 2 dates.

    Si tu as une colonne qui contient une durée, ça donnerais:
    SELECT identifiant_diplomate, sum(duree)
    FROM appels
    WHERE nom_diplomat LIKE '$nom_diplomat'
    AND dates BETWEEN '$date1' AND '$date2'
    GROUP BY identifiant_diplomat


    ça te donnera la durée totale diplomate par diplomate.
    0
  3. layork Messages postés 364 Statut Membre 11
     
    j ai regardé et en fait TIME c'est au format HH:MM:SS
    pour la difference entre 2 date c es le type DATE qui est en AAAAMMJJ
    le probleme risque d'etre que time c'est l'heure, et nom une durée

    donc en fait, si quelqu'un a une meilleur idée, je sus preneur

    en fait dans un champs on rentre la durée d'un appels sous cette forme:
    1h20, mai j ai remplacé le "h" par":"
    et donc j aimerais faire la somme des temps

    es-ce possible??

    l'informatique ca rend fou!!!!!
    0
    1. rucht Messages postés 248 Statut Membre 1
       
      tu veut donc faire la somme totale des appel d' un diplomate ( vive l' espionnage !! ;-p ) ?

      moi je te conseille de faire sa dans une page php ( sa sera plus facile a prog ) mais je pence que tu peux arriver a faire sa directement en requete sql ( mais perso je sais juste que sql sait faire les addition ) !

      rucht ( qui aure ete bien espion si y faler pas faire de sport ;p )
      0
  4. Matth_X
     
    Salut,
    tout d abord j aimperais preciser que la BSD n est pas mon fort ;
    mais j aurias une suggestion qu elle me paraît intersssante:
    Tu pourrais essayer un Groupe By pour ta dernière requète: le and final.

    Voilà , c est tout j esoere que ca te sera qd meme util.
    aurevoir et @+
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. layork Messages postés 364 Statut Membre 11
     
    tout d'abord, un diplomat, dans mon cas, n'est pas un homme politique, mais un serveur :p
    je suis pas espion;)(dommage..)
    et en fait c es un site pour support technique ou on entre tous les appels, et apres on peut faire des recherche des appels recu, par client, par date....
    et en fait, apres j affiche le resultat de la recherche
    et je voudrais que lors de cette affichage, il calcul la durée, en sachant que pour la durée, j ai creer un champs TIME

    apres, e sais pas si c es possible d'aditionner des TIME, et si oui, je sais as comment faire

    sinon, je suis preneur pour d'autres solution

    pour l'histoire de faire une autre page, ca ne me convient pas, v qe je veut afficher le temps sur la meme page ou j'affiche le resultat de la recherche...dommage:(

    l'informatique ca rend fou!!!!!
    0
  7. layork Messages postés 364 Statut Membre 11
     
    peut etre faut il que je transforme mon champs TIME en VARCHAR
    et que ensuite, je fasse un traitement hp pour calculer
    mais ca s annonce tres tres tres rude!!!
    vu que le temps est rentré sous cette forme HH:MM
    rien que d'y pencer ca me fatigue!!

    l'informatique ca rend fou!!!!!
    0
    1. rucht Messages postés 248 Statut Membre 1
       
      si tu recupere plutot le resultat en minute le calcul serai grandement faciliter !!

      rucht ( qui cherche toujour la facilliter )
      0
  8. rucht Messages postés 248 Statut Membre 1
     
    moi je pourrait te dire comment faire en php mais en sql ...

    desoler !

    rucht ( qui est a sa 1 ere anner de prog ...)
    0
    1. layork Messages postés 364 Statut Membre 11
       
      ba propose toujours, ca peut peut etre marcher en php..
      faut voire si c'est adaptabe avec ma page

      l'informatique ca rend fou!!!!!
      0
      1. rucht Messages postés 248 Statut Membre 1 > layork Messages postés 364 Statut Membre
         
        tu utilise " substr($date,0,4) " pour recupere ce qui t' interresse ( le heure puis les minute)
        t' ajoute les minute
         while ( $min =< 60)
          {
        
        $min-=60;
        $heure+=1;
        }
        


        puis les heure
        et sa doit marcher ( il y aura des truck a modif mais bon ...)

        rucht ( qui aide comme il peut )
        0
  9. layork Messages postés 364 Statut Membre 11
     
    bon, je repose ma question simplement:

    y a t'il un moyen de faire la somme de plusieur durée(qui sont a la base en n'importe quel format HH:MM ou MIN....) et de recuperer un resultat sous forme HH:MM?????????

    l'informatique ca rend fou!!!!!
    0
  10. layork Messages postés 364 Statut Membre 11
     
    c es lker et net, mais c'est pas possible malheuresemet car pour le technicien, c est bien plus facile de rentrer en HH:MM
    et c'est ausi bien plus parlant

    l'informatique ca rend fou!!!!!
    -1