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ękuję za pomoc oto moje podstawowe tabele. Wczoraj czytałem i będę czytał i przeglądał przykłady ale proszę podaj mi na przykładzie
bo tak najlepiej zrozumieć.
Pozdrawiam



  1. CREATE TABLE IF NOT EXISTS `galerie` (
  2. `id_galeria` int(3) NOT NULL auto_increment,
  3. `id_uzytkownik` tinyint(3) default NULL, // kogo jest ta galeria
  4. `tytul` varchar(200) collate utf8_polish_ci default NULL,
  5. `status` tinyint(4) NOT NULL,
  6. `link_miniaturka` varchar(100) collate utf8_polish_ci default NULL,
  7. `opis` text collate utf8_polish_ci,
  8. `data_szeroko` varchar(100) collate utf8_polish_ci default NULL,
  9. `data` date default NULL,
  10. PRIMARY KEY (`id_galeria`)
  11. ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci AUTO_INCREMENT=137 ;



  1. CREATE TABLE IF NOT EXISTS `filmy` (
  2. `id_film` int(3) NOT NULL auto_increment,
  3. `id_uzytkownik` tinyint(3) default NULL, // kogo jest ten film
  4. `tytul` varchar(200) collate utf8_polish_ci default NULL,
  5. `status` tinyint(4) NOT NULL,
  6. `film` varchar(100) collate utf8_polish_ci default NULL,
  7. `opis` text collate utf8_polish_ci,
  8. `data_szeroko` varchar(100) collate utf8_polish_ci default NULL,
  9. `data` date default NULL,
  10. PRIMARY KEY (`id_film`)
  11. ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci AUTO_INCREMENT=42 ;


Poniżej znajduję się tabela tablica czyli chcę osiągnąć efekt coś jak na facebook.
Obecnie moje zapytanie wyświetla tylko moje wpisy a ja chcę jeszcze osiągnąć taki efekt aby moje wpisy widzieli mi znajomi a ja ich wpisy.
Nie wiem czy takie rozwiązanie trzeba planować na etapie budowy bazy czy poprzez odpowiednie zapytanie.
  1. CREATE TABLE IF NOT EXISTS `tablica` (
  2. `id_tablica` int(11) NOT NULL auto_increment, // id tablicy nie potrzebuję z niego korzystać nigdzie
  3. `id_dodany` int(3) default NULL, // tu dodaje się ID dodanego filmu, galerii
  4. `id_uzytkownik` int(3) default NULL, // id uzytkownika u którego mają być wyświetlane wpisy
  5. `data` date default NULL,
  6. `czas` time default NULL,
  7. `rodzaj` varchar(50) collate utf8_polish_ci default NULL,
  8. `komentarz` varchar(500) collate utf8_polish_ci default NULL, // krótki komentarz użytkownika
  9. PRIMARY KEY (`id_tablica`)
  10. ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci AUTO_INCREMENT=77 ;



W tej tabeli miałem podobny problem dlatego dla każdego różnego "media" jest oddzielna kolumna.
Do każdego filmu, galerii użytkownik może dodać komentarz.
  1.  
  2. CREATE TABLE IF NOT EXISTS `comments` (
  3. `id` int(10) unsigned NOT NULL auto_increment,
  4. `id_film` int(11) default NULL,
  5. `id_galeria` int(11) default NULL,
  6. `dla_id` int(4) default NULL, // dla kogo jeśli jest to komentarz do profilu
  7. `id_uzytkownik` int(3) default NULL, // id dodającego
  8. `koment` text character set utf8 collate utf8_polish_ci NOT NULL,
  9. `datat` timestamp NOT NULL default CURRENT_TIMESTAMP,
  10. `status` tinyint(5) NOT NULL,
  11. PRIMARY KEY (`id`)
  12. ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=332 ;


Tu jeszcze tabela znajomi w której przechowuję zaproszenia.

  1. CREATE TABLE IF NOT EXISTS `znajomi` (
  2. `id_zaproszenia` int(5) NOT NULL auto_increment,
  3. `id_user_1` int(5) NOT NULL,
  4. `id_user_2` int(5) NOT NULL,
  5. `accepted` int(3) NOT NULL,
  6. `data` date NOT NULL,
  7. `data_czas` datetime NOT NULL,
  8. PRIMARY KEY (`id_zaproszenia`)
  9. ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci AUTO_INCREMENT=29 ;
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: 5.10.2025 - 11:03