webForumDet fria alternativet
Logga in / Bli medlem

Problem med MySQL

Databaser & SQL

3 svar · 418 visningar · startad av haagel

Medlem sedan feb. 2006134 inlägg
Frågan#1

Jag vill ta fram en ranking, vilken är helt beroende på vem som har lägst värd på ett visst fält i en tabell. För att göra det försöker jag köra en nästlad SQL-sats.

I exemplen försöker jag ta fram rankingen för en användare "david".

Följande SQL-sats fungerar och ger värdet 32916:

SELECT U_Time 
FROM users 
WHERE U_Name = 'david';

Denna fungerar också och ger värdet 2. För att få Davids ranking behöver jag sedan bara lägga +1 till värdet:

SELECT COUNT(*) 
FROM users 
WHERE U_Time < 32916;

Men jag vill ju förstås inte ha 32916 hårdkodat, och därför försöker jag att kombinera de två tidigare satserna:

SELECT COUNT(*) 
FROM users 
WHERE U_Time < 
(SELECT U_Time 
FROM users 
WHERE U_Name = 'david');

Nu fungerar det inte längre... :( Nån som vet varför?

Medlem sedan feb. 2006134 inlägg
#2

Glömde nämna att jag använder MySQL 3.23.49

Medlem sedan dec. 20025 483 inlägg
#3

Nästlade satser stödjs fr.o.m. version 4.1. I stället kan du skriva

select count(*)
  from users u
inner
  join users v
    on u.u_time < v.u_time
 where v.u_name = 'david'
Medlem sedan feb. 2006134 inlägg
#4

Tusen tack Peter S! Det fungerar! :)

267 ms totalt · 4 externa anrop · v20260731065814-full.14655e19
130 ms — deklarationer (db)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)