Autor Zpráva
JardaB
Profil
Zdravím, potřeboval bych opět nakopnout s updatem přes dvě tabulky.

Mám následující:

UPDATE reviry_klient a 
SET   a.udrzba = 0.1 
WHERE  status = 1 
LIMIT 100 

potřebuji ještě k 'udrzba' přičíst součet bonusů z tabulky 'bonusy_klient b', které jsou ve sloupci 'bousy_udrzba' a kde a.id = b.id_revir
Tomášeek
Profil
JardaB:
Update nad joinem by měl jít takto.
JardaB
Profil
Tomášeek:
Ano vím, že nějak takto, by to mělo jít. Ale to nějak mě uvádí do neklidu :D. Zkusím tedy na správný zápis přijít sám...
Potřebuji prostě updatovat na základě sumy z jiné tabulky

Předpokládám, že to tedy bude nějak takto:

update reviry_klient a
inner join bonusy_klient b on a.id = b.id_revir
set a.udrzba = a.udrzba + sum(b.bonusy_udrzba)
Kajman
Profil
Tipuji, že uvedený dotaz zhavaruje. Zkusil bych sum vypočítat korelovaným poddotazem
UPDATE reviry_klient a
SET    a.udrzba = a.udrzba + Coalesce((SELECT Sum(b.bonusy_udrzba) FROM bonusy_klient b WHERE a.id = b.id_revir), 0)
nebo připojit už posčítanou tabulku.
UPDATE reviry_klient a
       INNER JOIN (SELECT b.id_revir,
                          Coalesce(Sum(b.bonusy_udrzba), 0) soucet
                   FROM   bonusy_klient b
                   GROUP  BY b.id_revir) s
               ON a.id = s.id_revir
SET    a.udrzba = a.udrzba + s.soucet 

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0