Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]Ostatnie zdjęcia znajomych, Jak to zrobić?
koraso
post 25.03.2011, 17:37:59
Post #1





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 16.02.2009

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
NEO.pl
post 25.03.2011, 17:59:29
Post #2





Grupa: Zarejestrowani
Postów: 71
Pomógł: 5
Dołączył: 26.01.2011

Ostrzeżenie: (40%)
XX---


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?
Go to the top of the page
+Quote Post
koraso
post 25.03.2011, 18:23:56
Post #3





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 16.02.2009

Ostrzeżenie: (0%)
-----


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?

Ten post edytował koraso 25.03.2011, 18:24:52
Go to the top of the page
+Quote Post
Crozin
post 25.03.2011, 19:14:46
Post #4





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


@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.
Go to the top of the page
+Quote Post
koraso
post 25.03.2011, 19:15:20
Post #5





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 16.02.2009

Ostrzeżenie: (0%)
-----


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

Ten post edytował koraso 25.03.2011, 19:20:32
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 12.06.2025 - 20:56