Article View: dk.edb.database
Article #15319Re: Ranking system i MySQL
From: Kristian Damm Jensen
Date: Thu, 17 May 2001 07:45
Date: Thu, 17 May 2001 07:45
48 lines
2699 bytes
2699 bytes
"Th�ngmand" wrote:
>
> Jeg har en tabel der kunne se s�dan ud:
>
> ranking navn point
> 1 Ole 189
> 2 Lene 164
> 3 Hans 159
> 4 Jette 97
> 5 Thomas 23
>
> Hans har nu f�et 10 point mere og skal derfor en ranking op (alts� bytte
> plads med Lene)
>
> Den eneste l�sning jeg er kommet frem til, er at
>
> 1. give Hans et midertidigt ranking (eks. 000) og derefter
>
> 2. give Lene ranking=ranking+1 og s�
>
> 3. �ndre Hans's ranking til gl.ranking-1
Virker ikke. Hvad hvis Hans' ranking skal �ndres med mere end �n?
> Problemet er at det kr�ver 3 foresp�rgsler - nogle der har nogle bedre
> forslag der kan klares p� f�rre foresp�rgsler?
Mindre end to opdateringer kan ikke g�re det, og som du ser, benytter
jeg en del subselects. Til geng�ld er det hermed ligemeget, hvor mange
pladser Hans springer op i placeringen.
update T T2
set point = point + 10
, ranking = (select max(ranking) from T T1 where T1.point < T2.point +
10)
where navn = 'Hans'
update T
set ranking = ranking + 1
where point between (select point from T where navn = 'Hans') - 10
and (select point from T where navn = 'Hans')
Og s� kr�ver l�sningen naturligvis, at ranking ikke er unique, men
hvorfor skulle den ogs� v�re det? Du �ndrer vel ikke i din prim�rn�gle?
--
Kristian Damm Jensen | Feed the hungry. Go to
kristian-damm.jensen@capgemini.dk | http://www.thehungersite.com
Technical Details
Message-ID:
<3B03818B.D7933FB0@REMOVEcapgemini.dk>Path:
arc1-ca.pugleaf.net!archiver1.google.com!newsfeed.google.com!sn-xit-02!supernews.com!news.tele.dk!130.225.51.30!sunsite.dk!not-for-mailReferences:
<wvqM6.12551$zv2.1689214@news010.worldonline.dk>Show Full Headers
Complete Article Headers
X-Google-Language: DANISH,ASCII X-Google-Thread: fcdf9,ac5426437b14e0d6 X-Google-Attributes: gidfcdf9,public X-Google-ArrivalTime: 2001-05-20 21:31:58 PST Path: arc1-ca.pugleaf.net!archiver1.google.com!newsfeed.google.com!sn-xit-02!supernews.com!news.tele.dk!130.225.51.30!sunsite.dk!not-for-mail From: Kristian Damm Jensen <kristian-Damm.Jensen@REMOVEcapgemini.dk> Newsgroups: dk.edb.database Subject: Re: Ranking system i MySQL Date: Thu, 17 May 2001 09:45:16 +0200 Organization: CAP Gemini Danmark A/S Lines: 50 Sender: kristian-damm.jensen@capgemini1.capgemini.se Message-ID: <3B03818B.D7933FB0@REMOVEcapgemini.dk> References: <wvqM6.12551$zv2.1689214@news010.worldonline.dk> NNTP-Posting-Host: capgemini1.capgemini.se Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit X-Trace: sunsite.dk 990419407 26362 193.234.247.10 (21 May 2001 04:30:07 GMT) X-Complaints-To: news@sunsite.dk NNTP-Posting-Date: Mon, 21 May 2001 04:30:07 +0000 (UTC) X-Mailer: Mozilla 4.72 [en] (WinNT; I) X-Accept-Language: en,da X-Authenticated: kristian-damm.jensen@capgemini.dk