Forum-webmaster
Technique - programmation => PHP / MySQL => Message commencé par: VTA001 le le 23-04-2011 a 21:34:22

Titre: Somme d'un "Time" dans une autre table
Posté par: VTA001 le le 23-04-2011 a 21:34:22

Bonjour à tous,

N'étant pas très très à l'aise avec MySQL, j'aurais besoin d'aide pour réaliser un petit truc... je ne sais même pas si c'est réalisable, mais bon, qui ne tente rien n'a rien...

Je vais tenter de vous présenter au mieux le "soucis" et ce que je souhaiterais faire.

Je dispose dans une table MySQL (de 18 champs) un champ "duration" au format TIME. Actuellement, j'ai dans cette table plus de 4000 entrées.

Je souhaiterais faire la chose suivante. Dans cette table, chaque entrée est reliée à un membre de mon site par un numéro de membre (qui est donc un autre champ de la table). Je souhaiterais que dans une autre table, un champ "total" (par exemple) fasse la somme de tous les champs "duration" pour chacun de mes membres (au nombre de 55 pour l'instant).

En bref, je souhaiterais créer une nouvelle table avec seulement 2 champs : un champ pour le numéro de membre, et un autre champ qui va faire la somme du champ "duration" pour ce membre là.

Est-ce réalisable ? Si oui, comment ?

Merci par avance pour votre aide de pro !
;)

Titre: Re:Somme d'un "Time" dans une autre table
Posté par: MarvinLeRouge le le 24-04-2011 a 14:45:29

Salut,

1) C'est réalisable. Ca se ferait par exemple avec une vue qui contiendrait pour la colonne duration un truc du genre "SELECT SUM(duration) WHERE userID = monUserID"
2) Ce n'est pas forcément nécessaire. Il existe un système nommé trigger : le principe est d'indiquer à mysql que lorsqu'un évènement (ajout, mise à jour, suppression) arrive sur une table, il doit déclencher automatiquement une procédure.
Je pense qu'un trigger serait le mieux : tu ajoutes une colonne genre totalDuration à ta table user, et tu mets un trigger sur ta table contenant les entrées de durée pour qu'à chaque modification de cette table, la table user soit mise à jour.

Titre: Re:Somme d'un "Time" dans une autre table
Posté par: VTA001 le le 24-04-2011 a 14:49:09

Merci pour l'info Marvin !

J'avais bien entendu parler de cette fonction "trigger", mais je n'ai pas pensé à regarder ce que c'était...

Bon, maintenant, il faut que j'arrive à mettre ça en place. Je vais essayer de chercher sur internet, mais je suis preneur de tout coup de main !

:)

Titre: Re:Somme d'un "Time" dans une autre table
Posté par: MarvinLeRouge le le 25-04-2011 a 10:40:16

Je ne suis pas plus habitué que toi à trigger, mais j'ai regardé la syntaxe sur la doc de mysql, c'est pas sorcier.

Titre: Re:Somme d'un "Time" dans une autre table
Posté par: VTA001 le le 25-04-2011 a 10:42:38

J'ai essayé, j'ai utilisé la bonne syntaxe... Et puis, finalement, j'ai découvert que je n'avais pas le droit "SUPER" sur ma table (merci OVH), et que donc je ne peux pas mettre en place de trigger.

Je vais faire autrement. Merci pour l'aide !


Forum-webmaster | Actionné par YaBB SE
© 2001-2003, YaBB SE Dev Team. Tous droits réservés.