bonjour,
je souhaite savoir s'il est possible avec un seul UPDATE de mettre à jour une table en fonction d'une autre, en tenant compte de l'ordre des dates présentes dans les 2 tables...
pour exemple (simplifié):
la table 'evenement' est une succession de jour; la table 'taux_evolution' retrace l'evolution du taux suivant la date.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 CREATE TABLE evenement (id INTEGER, jour DATE, taux DECIMAL(6,2), CONSTRAINT PK_evenement PRIMARY KEY (id)) CREATE TABLE taux_evolution (id INTEGER, date_evo DATE, cout DECIMAL(6,2), nb_h DECIMAL(6,2), CONSTRAINT PK_evenement PRIMARY KEY (id))
donc, je veux pouvoir mettre à jour le champ 'taux' de la table 'evenement' en interrogeant la table 'taux_evolution' et le champ ('cout / nb_h'), en fonction du champ 'jour' qui doit être compris entre 2 dates 'date_evo1' et 'date_evo2', si 'date_evo2' > 'date_evo1'.
j'avais dans un premier temps fait çà en php, en interrogeant d'abord la table 'taux_evolution' classée par 'date_evo', puis pour chaque ligne:
puis, j'avais essayé en une seule requète SQL:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 UPDATE evenement SET taux='".$resultat_taux."' WHERE jour >= '".$resultat_date_evo."'
mais évidemment ça marche pour une seule date_evo rentrée; au delà de 2, il faut les prendre par ordre chrono, etc...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 UPDATE evenement AS e, taux_evolution AS t SET e.taux = (t.cout / t.nb_h) WHERE e.jour >= t.date_evo
peut-être en remplaçant le t.date_evo par un SELECT?
merci de votre aide, et désolé pour cette explication un peu confuse...
Partager