FAQ |
Kalender |
2016-09-08, 13:05 | #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.. |
||
Svara med citat |
2016-09-08, 13:38 | #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 |
||
Svara med citat |
2016-09-08, 13:58 | #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 |
||
Svara med citat |
2016-09-08, 14:34 | #4 | ||
|
|||
Mycket flitig postare
|
Citat:
|
||
Svara med citat |
2016-09-08, 15:04 | #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.
|
||
Svara med citat |
2016-09-08, 15:16 | #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 |
||
Svara med citat |
2016-09-08, 15:46 | #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. |
|||
Svara med citat |
2016-09-08, 15:51 | #8 | ||
|
|||
Mycket flitig postare
|
Citat:
|
||
Svara med citat |
2016-09-08, 16:00 | #9 | |||
|
||||
Klarade millennium-buggen
|
||||
Svara med citat |
2016-09-08, 16:32 | #10 | ||
|
|||
Mycket flitig postare
|
Citat:
denna lista vill jag sortera på användare som jag har minst en oläst meddelande ifrån. |
||
Svara med citat |
Svara |
|
|