Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Relacja między 3 tabelami
Forum PHP.pl > Forum > Bazy danych > MySQL
devurien
dzień dobry,
to mój pierwszy post więc chciałbym na początku przywitać wszystkich.

A teraz do rzeczy.
Tak wygląda (po obcięciu - na potrzeby forum) moja baza.



Zapytanie, które pobiera komentarze (tabela comments) dla odpowiedniego pubu (tabela pubs) na podstawia pól 'namepubs':
$comment=$this->db->query('SELECT * FROM pubs p, comments c, users u WHERE c.namepubs="'.$namepubs.'" AND p.namepubs="'.$namepubs.'" AND u.idusersc="'..'"');

działa OK.

Utworzyłem tabele users, która trzyma użytkowników. Teraz chciałbym przekształcić powyższe zapytanie tak aby wyświetliło mi użytkownikow którzy dodali komentarz - zachowując przy tym wszystko powyższe .

pozdrawiam.
starcode
Nie wiem czy dobrze rozumiem.
Chcesz pobrać komentarze dla wybranego pubu oraz razem z tym użytkownika, ktory owe komentarze dodał, tak?

Wówczas wystarczy zapytanie:
  1. "SELECT * FROM `pubs` p, `comments` c, `users` u WHERE c.`namepubs`='$namepubs' AND p.`namepubs`='$namepubs' AND c.`idusersc`=u.`idusers`"


Możesz również wykonać to zapytanie następująco:

  1. "SELECT * FROM `pubs` p, `comments` c, `users` u WHERE c.`namepubs`='$namepubs' AND p.`namepubs`=c.`namepubs` AND c.`idusersc`=u.`idusers`"
devurien
Cytat(starcode @ 27.03.2008, 21:22:36 ) *
Nie wiem czy dobrze rozumiem.
Chcesz pobrać komentarze dla wybranego pubu oraz razem z tym użytkownika, ktory owe komentarze dodał, tak?


witam,
niestety nie. Pragnę wyświetlić WSZYSTKIE komentarze dodane przez userów. Nie tylko przez pojdedyńczego usera - bo tu sprawa jest dość błacha jak wyżej :-) i w tym cały mój problem ach:/

pozdrawiam.
jarek_bolo
Kurde, nie kumam o co Ci chodzi.

Spróbuj jeszcze raz, napisać innymi słowy co chcesz wyciągnąć.

Bo jeśli wszystkie komentarze no to
Kod
SELECT * FROM comments


smile.gif
devurien
dzień dobry,
może i faktycznie źle się wysławiam - wybaczcie:)

Mamy sobie tabele pubs, która trzyma wszelkie informacje o pabach.
Wchodzimy sobie na taka stronę http://xxx.pl/pubs/vanilia (gdzie Vanilia jest nazwa pabu - realizuje to zapytanie: $showDetaillist=$this->db->query('SELECT * FROM pubs WHERE namepubs="'.$namepubs.'"'); ) i ładnie mi wsio listuje. U dołu strony jest możliwość dodawania komentarzy.
I teraz zalogowany user przypuśćmy, że ma ID = 1 o LOGINIE = devurien dodał komentarz, za nim dodał komentarz inny user o ID = 2 i LOGINIE = faraon.
Mamy teraz 2 userow którzy dodali do pabu np. Vanilia komentarz. Teraz chcę wyświetlić owe komentarze (wszystkie dodane przez wszystkich userow) w danym pabie w tym wypadku namepub=Vanilia. Może źle skonstruowałem bazę? Doradźcie coś chłopacy smile.gif

Cytat(jarek_bolo @ 28.03.2008, 12:53:20 ) *
Bo jeśli wszystkie komentarze no to
Kod
SELECT * FROM comments

i owszem lecz bez relacji miedzy tabelami uesers, pubs. Wyświetli jedynie komentarze bez podpisania jaki user dodał dany komentarz i przy jakim pubie.

czyli:
http://xxx.pl/pubs/vanilia
[..]
Komentarze:
fajny pub polecam.

a chce uzyskac:

http://xxx.pl/pubs/vanilia
[..]
Komentarze:
devurien naipisał dnia 11.11.2007: fajny pub polecam.


pozdrawiam was.
jarek_bolo
Stworzyłem sobie testowo trzy tabele i kombinowałem.
Wykombinowałem coś takiego:
Kod
SELECT u.login, c.*, p.* FROM comments AS c, users AS u, pubs AS p WHERE c.namepubs = 'TwojPub' AND c.idusersc = u.idusers AND p.namepubs = 'TwojPub'


O to Ci chodziło?
devurien
Błogosławiony jarek_bolo - Twe zapytanie wydaje się działać wyśmienicie smile.gif
(potestuję dokładniej wieczorem )

Lecz nie przypuszczałem, że może być to aż tak banalne smile.gif) - daj numer konta należy Ci się duże piwo !

ps. link: Fenomen wyborców PO - bardzo przypadł mi do gustu!

powzolę sobie jeszcze rzucić takim fajniutkim linkiem: http://pl.wikibooks.org/wiki/PHP/Relacje_i_indeksy - proszę Was bardzo:)
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.