Autor | Zpráva | ||
---|---|---|---|
Suta Profil |
Prosím o radu týkající se problému, který řeším již čtvrtý den.
Potřebuji zaktualizovat údaje v jedné tabulce s ohledem na údaje v jiné tabulce. Vytvořit sql dotaz v několika krocích není problém, potřebuji jej však skloubit pokud možno do jednoho jediného dotazu. Tabulka 1 banners(id,current_highest_bid) Tabulka 2 auction(bannersId,bpPoint) Záznamy v tabulce 1 (je v ní uložen nejvyšší aktuální příhoz na banneru) 1 | 50 2 | 180 3 | 100 Záznamy v tabulce 2 (výpis jednotlivých příhozů) 1 | 10 1 | 20 1 | 50 2 | 5 2 | 180 3 | 80 3 | 90 3 | 100 Požadavek: Po zapsání příslušných údajů do tabulky 2 (auction) potřebuji zaktualizovat v tabulce 1 (banners) aktuálně nejvyšší příhoz. Tzn. mám k dispozici id bannerů, na které byl proveden příhoz, potřebuji zjistit aktuální nejvyšší nabídku a tu zapsat do tabulky banners. Příklad: Do tabulky 2 (auction) vložím 2 nové záznamy: 2 | 10 3 | 500 Na banneru 2 jsou v tu chvíli nabídky 5,180 a nově 10. Do tabulky 1 u id 2 tedy zapíšu hodnotu 180 (která už tam vlastně je). Na banneru 3 jsou v tu chvíli nabídky 80,90,100 a nově 500. Do tabulky 1 u id 3 zapíšu hodnotu 500. Prosím o jakoukoliv radu, jak zpracovat výše uvedený Příklad v předcházejícím odstavci v jednom jediném dotazu (či jiné vhodné řešení). |
||
Kajman Profil |
#2 · Zasláno: 21. 2. 2012, 13:17:40
A potřebujete tabulku1? Nestačí Vám třeba view?
select bannersId as id, max(bpPoint) current_highest_bid from auction Update na vybraných řádcích by byl např. update banners b set b.current_highest_bid=(select max(a.bpPoint) from auction a where a.bannersId=b.id) where b.id in (1,3,42) |
||
Časová prodleva: 12 let
|
0