Mam tabeli wiadomości, które wygląda tak:Postgresql kwerendy skrzynki
Messages
+-----+------------+-------------+--------------+
| id | sender_id | receiver_id | created_at |
+-----------------------------------------------+
| 1 | 1 | 2 | 1/1/2013 |
| 2 | 1 | 2 | 1/1/2013 |
| 3 | 2 | 1 | 1/2/2013 |
| 4 | 3 | 2 | 1/2/2013 |
| 5 | 3 | 2 | 1/3/2013 |
| 6 | 5 | 4 | 1/4/2013 |
+-----------------------------------------------+
Jeżeli „nitka” to grupa komunikatów pomiędzy danym SENDER_ID i receiver_id chcę zapytanie do powrotu najnowsza 10 komunikaty dla ostatnich 10 wątków gdzie identyfikator nadawcy lub odbiorcy jest podanym identyfikatorem.
oczekiwany wynik, przy czym podane id_użytkownika wynosi 5:
+-----+------------+-------------+--------------+
| id | sender_id | receiver_id | created_at |
+-----------------------------------------------+
| 1 | 5 | 2 | 1/4/2013 |
| 2 | 5 | 2 | 1/4/2013 |
| 3 | 2 | 5 | 1/4/2013 |
| 4 | 3 | 5 | 1/4/2013 |
| 5 | 5 | 2 | 1/3/2013 |
| 6 | 5 | 4 | 1/3/2013 |
+-----------------------------------------------+
do wysokości 10 komunikatów pomiędzy, na przykład, użytkownik 5 i 2 (powyżej są 4) i ograniczenie do 10 nici (powyżej tam są 3).
Próbowałem z tego rodzaju kwerendy przy użyciu podzapytania, ale nie udało się uzyskać drugi limit liczby odrębnych wątków.
SELECT * FROM (SELECT DISTINCT ON (sender_id, receiver_id) messages.*
FROM messages
WHERE (receiver_id = 5 OR sender_id = 5) ORDER BY sender_id, receiver_id,
created_at DESC)
q ORDER BY created_at DESC
LIMIT 10 OFFSET 0;
Zastanawiam tworząc nową tabelę zawierającą wątek thread_id pole który byłby połączeniem SENDER_ID + receiver_id a potem po prostu łącząc w wiadomościach, ale mam ukrytych podejrzenia, że powinno to być wykonalne z tylko jednym stole .
Czy możesz pokazać zapytanie, które wypróbowałeś i oczekiwane dane wyjściowe na podstawie przykładowych danych, które pokazałeś powyżej? – bonCodigo
Po prostu, aby być czystym, pytasz o 1 wiadomość na wątek (zwracając co najwyżej 10 wierszy) lub 10 wiadomości na wątek (zwracając co najwyżej 100 wierszy). –
@ Kwestionariusz Pytam o 10 wiadomości na wątek (wracając do co najwyżej 100 wierszy) – johnnymire