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
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)

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: