Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][SQL] Zapytanie dotyczące wyświetlania wpisów na talicy, coś jak Facebook
lukaszk
post
Post #1





Grupa: Zarejestrowani
Postów: 159
Pomógł: 0
Dołączył: 21.12.2010

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


Witam, mam problem z zapytaniem
Mam tabelę tablica do której dodają się id dodanych filmów, galerii itd.
Założenie jest takie aby zapytanie wyświetlało to co użytkownik zaznaczył że ma być na tablicy.
Podstawowe treści, linki do fotek i filmów zawierają tabele filmy i galerie
id_dodany w tabeli tablica zawiera id filmu, galerii którą użytkownik chcę umieścić na tablicy.

mam taki problem - kiedy zapytanie dotyczyło tylko jednej tablicy (dla filmy) wszystko było ok
teraz dodałem tablice galerie i dla filmów dalej jest ok z tym że przy jednym rekordzie w tablicy galerie
wyświetla się tyle razy ile mam filmów czyli jeśli mam 7 filmów to mam i 7 razy ten sam wpis.
Proszę o pomoc jak to rozwiązać bo ja już długo się z tym bawię i nic (IMG:style_emoticons/default/sad.gif)


  1. SELECT *
  2. FROM tablica a JOIN filmy b, galerie c
  3. WHERE a.id_dodany=b.id_film OR a.id_dodany=c.id_galeria ORDER BY id_dodany DESC";
  4.  
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
lukaszk
post
Post #2





Grupa: Zarejestrowani
Postów: 159
Pomógł: 0
Dołączył: 21.12.2010

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


Dzięki jednak muszę poświęcić więcej czasu na naukę sql

A jak powinno wyglądać zapytanie które

tab_filmy // tabela z id filmu, id usera który dodał wpis na tablice
tab_galerie // tabela z id filmu, id usera który dodał wpis na tablice

filmy // tabela zawierająca id filmu, id użytkownika który ją dodał i różne inne dotyczące filmów
galerie // tabela zawierająca id galerii, id użytkownika który ją dodał i różne inne dotyczące galerii

znajomi // tabela zawierająca id powiązanych znajomych.
uzytkownicy // PODSTAWOWA tabela zawierająca informacje o użytkownikach. Id użytkownika jest unikalne i się nie powtórzy

Nie rozumiem "znajomy" czy to alias? nie mam takiej tabeli ani kolumny.

  1. SELECT id_user_2 AS znajomy FROM znajomi WHERE id_user_1 = X


Poniższy kod wyświetla prawidłowo wpisy na tablicy (z uwzględnieniem znajomości) tylko jak dołączyć inne tabele takie jak filmy, muzyka?

  1. SELECT *
  2. FROM galerie
  3. WHERE id_uzytkownik IN (
  4. SELECT id_uzytkownik FROM tab_galerie WHERE id_uzytkownik='$id_user_isset'
  5. UNION
  6. SELECT id_uzytkownik FROM tab_filmy WHERE id_uzytkownik='$id_user_isset'
  7. UNION
  8. SELECT id_user_2 AS znajomi FROM znajomi WHERE id_user_1 ='$id_user_isset'
  9. UNION
  10. SELECT id_user_1 AS znajomi FROM znajomi WHERE id_user_2 ='$id_user_isset'
  11. )


A czy nie najłatwiej by było gdyby tabela taka jak galerie, filmy miała dodatkową kolumnę tablica a w niej 0 albo 1 jeden oznacza wyświetl na tablicy.
Przypuszczam że zapytanie wówczas będzie krótsze i dodatkowo nie muszę odwoływać się zapytaniem do wielu tabel.

Dodatkowo mogę dodać kolumnę z losowym ciągiem który będzie identyfikatorem łączącym galerie na tablicy z komentarzami do tego.
Standardowym identyfikatorem komentarzy jest id_film, id_galeria

  1. SELECT * FROM galerie WHERE id_uzytkownik=$id AND tablica = 1
  2. UNION
  3. SELECT * FROM filmy WHERE id_user_1 = $id AND tablica = 1

tylko co się stanie jak trafi się a zapewne trafi się rekord z tym samym id czy można ustawić auto increment tak aby kolejny numer id był sprawdzany w kilku tabelach?
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 14.10.2025 - 20:56