FAQ |
Kalender |
![]() |
#1 | ||
|
|||
Mycket flitig postare
|
Hej,
behöver lite hjälp med att utforma en SQL för ett meddelande-system: såhär ser min databasstruktur ut lite förenklat table.dbo.messages sender_id_fk, receiver_id_fk, date, message, seen table.dbo.users id, firstname, lastname, ... Det jag nu vill åstadkomma är att ta ut en lista med användare sorterad på "seen" (int) jag får problem eftersom [messages] kan innehålla flera radera till samma användare där vissa är "seen" och andra inte.. |
||
![]() |
![]() |
![]() |
#2 | ||
|
|||
Har WN som tidsfördriv
|
Typ (otestat):
SELECT DISTINCT(sender_id_fk) FROM messages WHERE seen = 1 GROUP BY sender_id_fk Sen får du göra en join mot users |
||
![]() |
![]() |
![]() |
#3 | ||
|
|||
Mycket flitig postare
|
Citat:
SELECT DISTINCT(m.sender_id_fk) FROM message m RIGHT JOIN users u ON u.id=m.sender_id_fk WHERE m.seen = 1 GROUP BY m.sender_id_fk |
||
![]() |
![]() |
![]() |
#4 | ||
|
|||
Mycket flitig postare
|
Citat:
|
||
![]() |
![]() |
![]() |
#5 | ||
|
|||
Mycket flitig postare
|
riktigt så enkelt är det ju inte.. eftersom det bara finns en rad med användare och en användare kan ha flera meddelande kopplade till sig som i sintur ska vara sorterade på seen.
|
||
![]() |
![]() |
![]() |
#6 | ||
|
|||
Mycket flitig postare
|
så långt har jag kommit
SELECT DISTINCT(m.sender_id_fk), u.firstname, u.lastname, m.seen FROM message m RIGHT JOIN users u ON u.id=m.sender_id_fk GROUP BY m.sender_id_fk ORDER BY m.seen, m.created Problemet med denna är ju att måste sortera själva GROUP BY på seen eftersom den råkar bara ta den senaste seen |
||
![]() |
![]() |
![]() |
#7 | |||
|
||||
Klarade millennium-buggen
|
Borde du inte istället ha en kolumn i varje användares tabell där du sätter ID't av det meddelande den såg senast.
När man postar ett meddelande så uppdateras den kolumnen med det ID meddelandet får. När man kollar på meddelandena så uppdateras den med det högsta i den tråden. |
|||
![]() |
![]() |
![]() |
#8 | ||
|
|||
Mycket flitig postare
|
Citat:
|
||
![]() |
![]() |
![]() |
#9 | |||
|
||||
Klarade millennium-buggen
|
||||
![]() |
![]() |
![]() |
#10 | ||
|
|||
Mycket flitig postare
|
Citat:
denna lista vill jag sortera på användare som jag har minst en oläst meddelande ifrån. |
||
![]() |
![]() |
Svara |
|
|