Article View: pl.comp.bazy-danych
Article #194651Re: PostgreSQL - jak zredagować SQL?
From: hubert depesz lubaczewski
Date: Wed, 23 Sep 2015 08:42
Date: Wed, 23 Sep 2015 08:42
34 lines
2067 bytes
2067 bytes
On 2015-09-22, Marek <precz@spamowi.com> wrote:
> Witam,
>
> Mam zapytanie działające w skrócie w/g schematu:
>
> UPDATE ratings SET games=games+1, ... , FROM user ... (subquery)
>
> Sprawdziłem - subquery zwraca mi dwa rekordy co obrazowo można zapisać tak:
>
>
> UPDATE ratings SET games=games+1, ..., WHERE user_id IN (9,9);
>
> Kłopot w tym, że aktualizacja wykona się tylko raz a ja bym chciał aby
> wykonała się dwa razy bo użytkownik o ID 9 odbył dwa mecze a nie jeden.
> Jak to zapisać aby wykonało się więcej niż jeden raz?
> Zapytanie w oryginale jest rozbudowane, nie tylko zlicza gry ale jeszcze
> parę innych danych więc nie chce go przytaczać w całości.
załóżmy, że subquery zwraca kolumnę nazywającą się user_id.
wtedy:
with users_to_update as ( subquery ),
update_by as (select user_id, count(*) from users_to_update group by
user_id)
update ratings r
set games = r.games + x.count
from update_by as x
where x.user_id = r.user_id;
depesz
--
The best thing about modern society is how easy it is to avoid contact with it.
http://depesz.com/
Technical Details
Message-ID:
<t75adc-515.ln1@depesz.com>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!goblin1!goblin.stu.neva.ru!newsfeed.neostrada.pl!unt-exc-01.news.neostrada.pl!unt-spo-a-02.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mailReferences:
<mtrd71$eu8$1@news.icm.edu.pl>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!goblin1!goblin.stu.neva.ru!newsfeed.neostrada.pl!unt-exc-01.news.neostrada.pl!unt-spo-a-02.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mail Newsgroups: pl.comp.bazy-danych From: hubert depesz lubaczewski <depesz@depesz.com> Subject: Re: PostgreSQL - jak zredagować SQL? References: <mtrd71$eu8$1@news.icm.edu.pl> Organization: depesz Software Reply-To: depesz@depesz.com User-Agent: slrn/1.0.2 (Linux) Mime-Version: 1.0 Date: Wed, 23 Sep 2015 10:42:05 +0200 Message-ID: <t75adc-515.ln1@depesz.com> Lines: 34 NNTP-Posting-Host: 95.49.209.153 X-Trace: 1442998206 unt-rea-a-02.news.neostrada.pl 27524 95.49.209.153:51343 X-Complaints-To: abuse@news.neostrada.pl Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit