Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Grupowanie w wiadomościach
Forum PHP.pl > Forum > Bazy danych > MySQL
quax
Witam,
mam taki problem. Otóż robie wiadomości prywatne tzn. PM i funkcjonalnością przypomina wiadomosci z Facebooka. Wytłumacze w czym problem:

baza wygląda mniej wiecej tak:
ID | ID_USER | ID_USER_SENDER | TEXT

wiadomosci wysyłam w sposób taki iż id_user to identyfikator uzytkownika który dostaje wiadomosc, a id_user_sender to identyfikator użytkownika wysyłającego.

baza po dodaniu kilku rekordów:
ID | ID_USER | ID_USER_SENDER | TEXT
1 | 1 | 2 | tresc wiadomosc1
2 | 2 | 1 | tresc wiadomosc2
3 | 2 | 1 | tresc wiadomosc3
4 | 2 | 3 | tresc wiadomosc4
5 | 1 | 2 | tresc wiadomosc5
6 | 1 | 3 | tresc wiadomosc6

musze to pogrupować w sposób taki aby tylko moje wiadomosci byly dostepne dla mnie czyli id 1:

ID | ID_USER | TEXT
1 | 1 | tresc wiadomosc5 - ostatni rekord id_user/id_user_sender czyli ID 5
6 | 1 | tresc wiadomosc6 - ostatni rekord id_user/id_user_sender czyli ID 6


potrzebuje tylko unikalnych ID_USER i ID_USER_SENDER
lexis72
  1. select text from xxx where id_user = 1
quax
Naprawdę pomocne. dry.gif

takie coś odpada. bo mogę i ja wysłać wiadomość i ktoś do mnie a wcale nie muszę jej odczytać.

muszę otrzymać wynik niezależnie od tego czy to ja jestem ID_USER CZY ID_USER_SENDER
i dodatkowo musi być to ostatnia wiadomość
lexis72
Szczerze mowiac to Cie nie rozumiem jesli chcesz zobaczyc wiadomosci wyslane i odebrane to dodaj tez id_user_sender do warunku where. Jesli chcesz ostatnią wiadomosc dodaj Limit 1 na sortowanie id wiadomosci.
quax
Patrząc po twoim doświadczeniu raczej wątpię ze mi pomożesz. Opisze wszystko jeszcze raz.

System wiadomości działa na zasadzie: Wiadomości wątkowych.

Wyświetlanie ok.
Wysyłanie ok.
Wyświetlanie po obu stronach ok.

Sprawa się komplikuję jak mam zrobić listę osób z którymi rozmawiałem. Trzeba brać pod uwagę ze ktoś mógłby do mnie napisać, a ja nie odp.
Całość ma wyglądać w ten sposób że jeśli pisałem z kimś to ma być nick osoby(w moim przypadku ID użytkownika w tabeli ID_USER_SENDER) i ostatnia wiadomość albo moja albo jego zależy kto napisał ostatni.
Cała baza wygląda tak z przykładami:



Dobra dodam i moje zapytanie jak wygląda a pod nim wynik:

nie powinny się duplikować jak w przypadku ID 1 i 2, a 16 i 18 to wiadomości bez odp.
Michael2318
Powinieneś tutaj dodać dodatkową kolumnę, gdzie będziesz numerował ROZMOWY (nie rekordy, a rozmowy). Wtedy przykładowo dla ID 1 i 2 przypisujesz unikalny identyfikator (powiedzmy 443) i w zapytaniu zwyczajnie definiujesz 'GROUP BY `unique_id_pm`. W efekcie powinieneś dostać to czego oczekujesz.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.