Page 1 sur 1
Mise a jour de 2 tables en meme temps
Posté : 28 juin 2013, 17:27
par rimie
Bonjour,
J'ai une table des albums et des chansons, je voudrais mettre a jour la table a chaque ecoute d'une chanson:
Table albums
id
album
total_play
Table chansons
id
id_album
chanson
play
au lieu de mettre ca:
// chansons
UPDATE chansons SET play = play + 1 WHERE id = id
// albums
UPDATE albums SET total_play = total_play + 1 WHERE id = id
Quand un visiteur ecoute une chanson, on doit incrementer le compteur de la chanson par 1 et aussi l'album de la chanson.
Merci a vous
Re: Mise a jour de 2 tables en meme temps
Posté : 28 juin 2013, 19:40
par moogli
salut,
le seul moyen c'est de créer une vue modifiable mais je ne sais pas si c'est réalisable sur deux tables (l'update sur deux tables).
@+
Re: Mise a jour de 2 tables en meme temps
Posté : 28 juin 2013, 19:46
par yann18
bonjour,
total_play est un champ calculé(règle de modélisation) donc il est inutile de le sauvegarder dans une table car on peut déduire le total des chansons écoutés en faisant tout simplement une requête sql qui doit sommer les colonnes play:
select sum(play) from chansons;
Re: Mise a jour de 2 tables en meme temps
Posté : 28 juin 2013, 19:49
par moogli
je pense plutôt qu'il veut un compteur d'écoute des chansons et non la somme de la durée des chanson.
@+
Re: Mise a jour de 2 tables en meme temps
Posté : 28 juin 2013, 19:58
par sirakawa
Et en ayant trois tables?
chansons id_chanson....
albums : id_album
albums_chansons id_chanson, id_album, nombre_passages_chanson
Il me semble qu'une requete assez simple donne facilement le nombre de passages d'une chanson
et une requete un peu plus complexe le nombre de passages d'un album en tenant compte des passages des chansons qu'il conient.
Re: Mise a jour de 2 tables en meme temps
Posté : 28 juin 2013, 22:48
par moogli
En fait juste le nombre de lecture des titres est suffisant un simple select sum(nbvue) from chanson where idalbum=412 suffit a avoir le nombre de vue total par album.
Après un sub select dans une requête plus globale fait l'affaire (ou une udf pour faire un peux plus clair

).
@+
Re: Mise a jour de 2 tables en meme temps
Posté : 29 juin 2013, 03:29
par rimie
on peut le faire par SUM, mais je veux eviter une multitude de requetes dans une seule page, exemple de page:
Chanteur A
Album1: Nombre de chansons, nombre de lecture des chansons de cette album
Album2: Idem ici
Album3: Idem ici
Alors, au lieu de faire:
SELECT * FROM albums WHERE id_chanteur = id
//on affiche les donnees
SELECT SUM() FROM chansons ....
Je voudrais lors de la lecture d'une chanson, on met a jour l'album pour recuperer le nombre d'ecoute.
Re: Mise a jour de 2 tables en meme temps
Posté : 29 juin 2013, 13:24
par Zahnzao
Salut,
Quelque chose dans ce style.
SELECT albums.id,albums.album, sum(chansons.play) AS total_play FROM albums
INNER JOIN chansons ON chansons.id_album = albums.id
WHERE id = id
Re: Mise a jour de 2 tables en meme temps
Posté : 29 juin 2013, 15:34
par moogli
@Zahnzao : il faudrait un group by pour faire bien mais oui une solution
sinon
un select les champs albums, select count(*) from chanson where idalbum = ab.idalbum as nbtitre, select sum(nbvue) from chanson where idalbum = ab.idalbum as nbecoute, etc
from albums ab
@+
Re: Mise a jour de 2 tables en meme temps
Posté : 01 juil. 2013, 07:15
par rimie
Je pense que j'etais mal comprise, au lieu de faire un SELECT SUM() pour afficher le total des ecoutes pour un album, je veux qu'a chaque fois une chanson est ecoutee on mets a jour l'album par une increentation de 1.
Au lieu de mettre
// on affiche les albums du chanteur
SELECT * FROM albums WHERE id_chanteur = id
// on calcule le total des ecoutes <====== Cette requete je veu l'eviter par la suivante
SELECT SUM() FROM chansons ....
UPDATE de l'album et de la chanson en meme temps (une seule requete)
Re: Mise a jour de 2 tables en meme temps
Posté : 01 juil. 2013, 11:56
par sirakawa
Je crois au contraire que tout le monde a compris et estime qu'une bonne conception des tables éviterait cette double mise à jour.
Sans quoi, je ne vois pas où est le problème de mettre à jour deux tables successivement, éventuellement en bloquant une pendant qu'on met l'autre à jour
Re: Mise a jour de 2 tables en meme temps
Posté : 01 juil. 2013, 12:01
par moogli
sino, comme indiqué en une seule requête tu peux le faire sur une vue (qui l'autorise).
ceci c'est effectivement un problème de conception que d'avoir une donnée redondante
@+
Re: Mise a jour de 2 tables en meme temps
Posté : 02 juil. 2013, 01:43
par rimie
je veux juste consulter s'il y a une methode que je connaissais pas, merci a vous