webForumDet fria alternativet

Ett svar i en tabell blir 1 med ett alias i en annan?

Databaser & SQL

3 svar · 217 visningar · startad av lillebror

Medlem sedan apr. 20041 597 inlägg
Frågan#1

Hej,

Jag håller på och programmerar om mitt forum från grunden, både databas- och php-mässigt.

Nu till frågan. När jag skriver ut en tråd som har x antal poster så finns det ju för varje post en medlem som står som ägare till denna. I posten finns det även en funktion som talar om huruvida användaren är online eller inte.

I min sql-fråga som hämtar ut alla poster för en tråd skulle jag samtidigt för varje "postägare" vilja hämta ut information från tabellen tblonline om han/hon är inloggad genom en sub-query. Är värdet sant i tblonline (utifrån en timestamp-check) så skulle jag i min huvudfråga vilja sätta en aliaskolumn till, låt säga 1 för inloggad och 0 för utloggad.

Går detta att lösa eller jag luddig i min frågeställning?

Tidigare hade jag denna onlinefunktion i en separatfråga men nu försöker jag slå ihop frågor där så är möjligt.

Medlem sedan dec. 200012 464 inlägg
#2

Jo, det går väl

select ... , (select ... from online where userid = threads.userid) as isOnline
from threads

ungefär, då du inte ger mer information.

Medlem sedan apr. 20041 597 inlägg
#3

Jag tänkte mig någonting i denna stil:

http://dev.mysql.com/doc/refman/5.1/en/if-statement.html

IF date_time > INTERVAL '5' MINUTES THEN RETURN '1';

1 = Online.

Fungerar det att baka in detta i en SQL-sats?

Medlem sedan dec. 200012 464 inlägg
#4

Nej, if är ett statement som används i procedurer. Använd case

case when <expression> 
   THEN 1 else 0 end

Jag förstår inte vad du menar med

date_time > INTERVAL '5' MINUTES
254 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)