[RESOLU] Mise a jour de 2 tables en meme temps

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Mise a jour de 2 tables en meme temps

Re: Mise a jour de 2 tables en meme temps

par rimie » 02 juil. 2013, 01:43

je veux juste consulter s'il y a une methode que je connaissais pas, merci a vous

Re: Mise a jour de 2 tables en meme temps

par moogli » 01 juil. 2013, 12:01

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

par sirakawa » 01 juil. 2013, 11:56

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

par rimie » 01 juil. 2013, 07:15

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

par moogli » 29 juin 2013, 15:34

@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

par Zahnzao » 29 juin 2013, 13:24

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

par rimie » 29 juin 2013, 03:29

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

par moogli » 28 juin 2013, 22:48

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

par sirakawa » 28 juin 2013, 19:58

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

par moogli » 28 juin 2013, 19:49

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

par yann18 » 28 juin 2013, 19:46

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

par moogli » 28 juin 2013, 19:40

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).

@+

Mise a jour de 2 tables en meme temps

par rimie » 28 juin 2013, 17:27

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