j'ai besoin de remonter la somme d'un détail au niveau d'une table (en
2 mot le solde d'un compte correspondant à la somme de mouvements)
J'ai besoin que cette info soit calculée au niveau de la table car cela
me sert ensuite dans un générateur de requête; donc le calculer par
jointure serait trop complexe.
J'ai donc rajouté une colonne à ma table
et mon idée était de sortir la requete d'update toute faite
select concat('update people set wrk_solde=',sum(bnk_signed),' where
ppl_id=',people_bank.ppl_id) as sqlmaj from people_bank inner join
people on people_bank.ppl_id=people.ppl_id where people_bank.bnk_type
not in(8,9)
and lvl_id=1363
group by people_bank.ppl_id
Quelques 1032 ms pour me retourner 13000 lignes d'update, mais ensuite
les updates prennent vraiment trop de temps.
Donc mes questions :
- en mySQL 4.2.22 (attention pas en 5 !) serait-il possible de faire
une procédure stockée ?
si oui quel serait le code ?
- y'aurait-il moyen de faire cela en une requête ?
- le bulk insert n'aurait-il pas une correspondance pour faire du bulk
update ?
Merci de vos réponses.
--
Eric Roumégou
Webmaster des wtablettes
http://cerbermail.com/?qE7t4Qvilo
(cliquez sur le lien ci-dessus pour me contacter en privé)
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Roumégou Eric
je me réponds (mais les proc stockées en 4.22 ça existent ? ça m'interresse)
Avec ce script
drop table if exists tmp_solde; create table tmp_solde select people_bank.ppl_id as ppl_id,sum(bnk_signed) as solde from people_bank inner join people on people_bank.ppl_id=people.ppl_id where people_bank.bnk_type not in(8,9) and people.lvl_id3005 group by people_bank.ppl_id; alter table tmp_solde add unique ppl_id (ppl_id); update people, tmp_solde set people.wrk_solde = tmp_solde.solde where people.ppl_id = tmp_solde.ppl_id; drop table if exists tmp_solde;
je prends qq secondes au lieu des 10mn Ouf !
Roumégou Eric avait prétendu :
Bonjour,
j'ai besoin de remonter la somme d'un détail au niveau d'une table (en 2 mot le solde d'un compte correspondant à la somme de mouvements)
J'ai besoin que cette info soit calculée au niveau de la table car cela me sert ensuite dans un générateur de requête; donc le calculer par jointure serait trop complexe.
J'ai donc rajouté une colonne à ma table et mon idée était de sortir la requete d'update toute faite
select concat('update people set wrk_solde=',sum(bnk_signed),' where ppl_id=',people_bank.ppl_id) as sqlmaj from people_bank inner join people on people_bank.ppl_id=people.ppl_id where people_bank.bnk_type not in(8,9) and lvl_id63 group by people_bank.ppl_id
Quelques 1032 ms pour me retourner 13000 lignes d'update, mais ensuite les updates prennent vraiment trop de temps.
Donc mes questions :
- en mySQL 4.2.22 (attention pas en 5 !) serait-il possible de faire une procédure stockée ? si oui quel serait le code ?
- y'aurait-il moyen de faire cela en une requête ? - le bulk insert n'aurait-il pas une correspondance pour faire du bulk update ?
Merci de vos réponses.
-- Eric Roumégou Webmaster des wtablettes http://cerbermail.com/?qE7t4Qvilo (cliquez sur le lien ci-dessus pour me contacter en privé)
je me réponds (mais les proc stockées en 4.22 ça existent ? ça
m'interresse)
Avec ce script
drop table if exists tmp_solde;
create table tmp_solde
select people_bank.ppl_id as ppl_id,sum(bnk_signed) as solde
from people_bank inner join people on people_bank.ppl_id=people.ppl_id
where people_bank.bnk_type not in(8,9)
and people.lvl_id3005 group by people_bank.ppl_id;
alter table tmp_solde add unique ppl_id (ppl_id);
update people, tmp_solde set people.wrk_solde = tmp_solde.solde where
people.ppl_id = tmp_solde.ppl_id;
drop table if exists tmp_solde;
je prends qq secondes au lieu des 10mn Ouf !
Roumégou Eric avait prétendu :
Bonjour,
j'ai besoin de remonter la somme d'un détail au niveau d'une table (en 2 mot
le solde d'un compte correspondant à la somme de mouvements)
J'ai besoin que cette info soit calculée au niveau de la table car cela me
sert ensuite dans un générateur de requête; donc le calculer par jointure
serait trop complexe.
J'ai donc rajouté une colonne à ma table
et mon idée était de sortir la requete d'update toute faite
select concat('update people set wrk_solde=',sum(bnk_signed),' where
ppl_id=',people_bank.ppl_id) as sqlmaj from people_bank inner join people on
people_bank.ppl_id=people.ppl_id where people_bank.bnk_type not in(8,9)
and lvl_id63
group by people_bank.ppl_id
Quelques 1032 ms pour me retourner 13000 lignes d'update, mais ensuite les
updates prennent vraiment trop de temps.
Donc mes questions :
- en mySQL 4.2.22 (attention pas en 5 !) serait-il possible de faire une
procédure stockée ?
si oui quel serait le code ?
- y'aurait-il moyen de faire cela en une requête ?
- le bulk insert n'aurait-il pas une correspondance pour faire du bulk update
?
Merci de vos réponses.
--
Eric Roumégou
Webmaster des wtablettes
http://cerbermail.com/?qE7t4Qvilo
(cliquez sur le lien ci-dessus pour me contacter en privé)
je me réponds (mais les proc stockées en 4.22 ça existent ? ça m'interresse)
Avec ce script
drop table if exists tmp_solde; create table tmp_solde select people_bank.ppl_id as ppl_id,sum(bnk_signed) as solde from people_bank inner join people on people_bank.ppl_id=people.ppl_id where people_bank.bnk_type not in(8,9) and people.lvl_id3005 group by people_bank.ppl_id; alter table tmp_solde add unique ppl_id (ppl_id); update people, tmp_solde set people.wrk_solde = tmp_solde.solde where people.ppl_id = tmp_solde.ppl_id; drop table if exists tmp_solde;
je prends qq secondes au lieu des 10mn Ouf !
Roumégou Eric avait prétendu :
Bonjour,
j'ai besoin de remonter la somme d'un détail au niveau d'une table (en 2 mot le solde d'un compte correspondant à la somme de mouvements)
J'ai besoin que cette info soit calculée au niveau de la table car cela me sert ensuite dans un générateur de requête; donc le calculer par jointure serait trop complexe.
J'ai donc rajouté une colonne à ma table et mon idée était de sortir la requete d'update toute faite
select concat('update people set wrk_solde=',sum(bnk_signed),' where ppl_id=',people_bank.ppl_id) as sqlmaj from people_bank inner join people on people_bank.ppl_id=people.ppl_id where people_bank.bnk_type not in(8,9) and lvl_id63 group by people_bank.ppl_id
Quelques 1032 ms pour me retourner 13000 lignes d'update, mais ensuite les updates prennent vraiment trop de temps.
Donc mes questions :
- en mySQL 4.2.22 (attention pas en 5 !) serait-il possible de faire une procédure stockée ? si oui quel serait le code ?
- y'aurait-il moyen de faire cela en une requête ? - le bulk insert n'aurait-il pas une correspondance pour faire du bulk update ?
Merci de vos réponses.
-- Eric Roumégou Webmaster des wtablettes http://cerbermail.com/?qE7t4Qvilo (cliquez sur le lien ci-dessus pour me contacter en privé)