webForumDet fria alternativet

Problem med MySQL

3 svar · 418 visningar · startad av haagel

haagelMedlem sedan feb. 2006134 inlägg
#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?

haagelMedlem sedan feb. 2006134 inlägg
#2

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

Peter SMedlem sedan dec. 20025 484 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'
haagelMedlem sedan feb. 2006134 inlägg
#4

Tusen tack Peter S! Det fungerar! :)

Genererad på 380 ms · cache AV · v20260730165559-full.f96bc7eb