Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Ostatnie zdjęcia znajomych
Forum PHP.pl > Forum > Przedszkole
koraso
Witam,
Piszę mały portal społecznościowy. I pojawił się problem przy funkcji "Ostatnie zdjęcia znajomych". Otóż mam 2 tabele:
  1. friends: uid1, uid2, date, STATUS;
  2. photos: id, uid, date;

i nie mam pojęcia jak skonstruować odpowiednie zapytanie... Bardzo prosił bym o pomoc.
NEO.pl
Cytat(koraso @ 25.03.2011, 17:37:59 ) *
Witam,
Piszę mały portal społecznościowy. I pojawił się problem przy funkcji "Ostatnie zdjęcia znajomych". Otóż mam 2 tabele:
  1. friends: uid1, uid2, date, STATUS;
  2. photos: id, uid, date;

i nie mam pojęcia jak skonstruować odpowiednie zapytanie... Bardzo prosił bym o pomoc.


mamy zgadywac co dokladnie uid1 i uid2 znacza? I jak robisz zapytanie obecnie?
koraso
Tabela friends to powiązanie 2 użytkowników o numerach id: uid1 i uid2 jako "znajomych".
Tabela photos przechowuje informacje o zdjęciach, i tu również uid ID użytkownika który dodał zdjęcie.
Aktualnie nie mam żadnego zapytania, bo nie mam pomysłu jak je zrobić. A pisać samo "select ... from photos..." chyba jest bez sensu?
Crozin
@NEO.pl: Rozumiem, że można się nie domyślić znaczenia niektórych kodów wrzucanych tutaj na forum, ale cholera... uid1, uid2 w tabelach łączących użytkowników się nie domyślić. Swoją drogą uid[1|2] do najlepszych nazw nie należy.

Jak rozumiem ma to być coś w stylu "ostatnio dodane zdjęcia przez Twoich znajomych", tak? Utwórz sobie dodatkową tabelę z użytkownikiem który ma odczytać dane, użytkownikiem który dodał zdjęcie, zdjęciem i datą utworzenia. Potem odczyt będzie banalnie prosty:
  1. SELECT ...
  2. FROM tbl_name tbl
  3. INNER JOIN users u1 ON u1.id = tbl.uid1,
  4. INNER JOIN users u2 ON u2.id = tbl.uid2
  5. INNER JOIN photo p ON p.id = tbl.pid
  6. ORDER BY tbl.created_at DESC
  7. LIMIT X;
Dodawanie danych do tej tabeli też nie będzie skomplikowane, ponieważ wystarczy utworzyć wyzwalacz uruchamiany po dodaniu nowego rekordu do tabeli z zdjęciami, który to doda wpisy do pow. tabeli dla wszystkich przyjaciół autora zdjęcia.
koraso
Mam zapytanko które wyświetla ostatnie zdjęcia znajomych. Jest jeszcze 1 szczegół... Niestety obecne zapytanie wyświetla 1 użytkownika kilka razy jeśli dodał kilka zdjęc. Chciałbym aby wyświetlało się tylko 1 najnowsze zdjęcie dla 1 użytkownika. Niestety dodanie dodanie DISTINCT(p.uid) nic nie daje;/
  1. SELECT p.id,
  2. FROM photos AS p, friends AS f
  3. WHERE (p.uid = f.uid2 AND f.uid1 = $ID) OR (p.uid = f.uid1 AND f.uid2 = $ID) GROUP BY uid
  4. ORDER BY p.date DESC
  5. LIMIT 5;


//Edit
@Crozin prawie równocześnie:) Wydaje mi się, że Twoje rozwiązanie nie jest do końca optymalne, bo przy większej liczbie użytkowników tabela która proponujesz będzie miała ogromną liczę rekordów... W każdym bądź razie dziękuje za propozycję wink.gif
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.