A voir également:
- {SQL Server} mise a jour avec deux tables
- Mise a jour chrome - Accueil - Applications & Logiciels
- Mise a jour windows 10 - Accueil - Mise à jour
- Mise a jour chromecast - Accueil - Guide TV et vidéo
- Mise a jour kindle - Guide
- Mise a jour windows 7 - Accueil - Mise à jour
3 réponses
Salut
À moins de disposer de trigger dans ta base, tu dois passer 2 requêtes pour ta mise à jour : la première pour table2 ou table3 et la seconde pour table1.
À moins de disposer de trigger dans ta base, tu dois passer 2 requêtes pour ta mise à jour : la première pour table2 ou table3 et la seconde pour table1.
oui , je c'est tres bien, mais je vois pas comment faire avec deux tables, en plus ou mettre max (date entree)
Merci de guide dans ma recheche
Merci de guide dans ma recheche
Salut,
Allons-y progressivement.
1. l'intégralité des entrées c'est
2. pour obtenir les dernière_date_entree par code, on parcourt l'intégralité des entrées en ne conservant que la date max.
3. pour obtenir le dernier prix d'achat par code, on parcourt l'intégralité des entrées en ne gardant que les lignes où (code, date_entree) appartient à derniere_date_entree par code. Des lignes conservées, on récupère le prix :
maintenant, on remplace nos paraphrases par du sql valide
2=>
3=>
Voilà ! tu as maintenant un joli guide (code, dernier_prix_achat) avec lequel tu vas pouvoir mettre table1 à jour.
Je te laisse réviser la "Mise à jour d'une table depuis une autre table". La théorie voudrait que cette ultime mise à jour se fasse en se basant sur le guide ci-dessus. Mais comme ça a l'air très gourmand en mémoire, je suppose qu'il vaudra mieux stocker ce guide dans une table temporaire et faire ta mise à jour de table1 d'après cette table temporaire
Allons-y progressivement.
1. l'intégralité des entrées c'est
select code, prix_achat, date_entree from table2 union select code, prix_achat, date_entree from table3
2. pour obtenir les dernière_date_entree par code, on parcourt l'intégralité des entrées en ne conservant que la date max.
select code, max(date_entree) derniere_date_entree from (l'intégralité des entrées) group by code
3. pour obtenir le dernier prix d'achat par code, on parcourt l'intégralité des entrées en ne gardant que les lignes où (code, date_entree) appartient à derniere_date_entree par code. Des lignes conservées, on récupère le prix :
select code, prix_achat from (l'intégralité des entrées) t1 where (t1.code, t1.date_entree) in (derniere_date_entree par code)
maintenant, on remplace nos paraphrases par du sql valide
2=>
select code, max(date_entree) derniere_date_entree from (select code, prix_achat, date_entree from table2 union select code, prix_achat, date_entree from table3) group by code
3=>
select code, prix_achat from (select code, prix_achat, date_entree from table2 union select code, prix_achat, date_entree from table3) t1 where (t1.code, t1.date_entree) in ( select code, max(date_entree) derniere_date_entree from (select code, prix_achat, date_entree from table2 union select code, prix_achat, date_entree from table3) group by code)
Voilà ! tu as maintenant un joli guide (code, dernier_prix_achat) avec lequel tu vas pouvoir mettre table1 à jour.
Je te laisse réviser la "Mise à jour d'une table depuis une autre table". La théorie voudrait que cette ultime mise à jour se fasse en se basant sur le guide ci-dessus. Mais comme ça a l'air très gourmand en mémoire, je suppose qu'il vaudra mieux stocker ce guide dans une table temporaire et faire ta mise à jour de table1 d'après cette table temporaire