🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: dk.edb.database
Article #15319

Re: Ranking system i MySQL

#15319
From: Kristian Damm Jensen
Date: Thu, 17 May 2001 07:45
48 lines
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-mail
References: <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