Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MYSQL]Join = za dużo wyników
Forum PHP.pl > Forum > Bazy danych > MySQL
HgReed
Witam.
Mam sobie 2 bazy :
1) articles
  1. article_id //numer artykułu
  2. title //tytuł
  3. body //treść
  4. date //DATA dodania
  5. category_id //id kategorii
  6. comment_num //liczba komentarzy

2) comments
  1. id //numer komentarza
  2. article_id //numer artykułu, którego jest ten komentarz
  3. author //autor
  4. date //DATA dodania
  5. body //treść

I mam pytanie :
Jak wyjąć wszystkie komentarze po id artykułu?
Takie zapytanie :
  1. SELECT * FROM `articles` JOIN `comments` USING (article_id)

Daje mi :
  1. [article_id] => 2 //id artykułu
  2. [title] => Lorem... //tytuł artykułu
  3. [body] => to jest komentarz //treść komentarza
  4. [date] => 2011-12-20 //data dodania komentarza
  5. [category_id] => 1 //kategoria artykułu
  6. [comment_num] => 1 //l. kom. artykułu
  7. [id] => 1
  8. [author] => nikt

A takie zapytanie :
  1. SELECT * FROM `comments` JOIN `articles` USING (article_id)

Daje :
  1. [article_id] => 2 //id artykułu
  2. [id] => 1 //id komentarza
  3. [author] => nikt //autor komentarza
  4. [date] => 2011-12-07 //data dodania komentarza
  5. [body] => Lorem ipsum... //treść artykułu
  6. [title] => Lorem... //tytuł artykułu
  7. [category_id] => 1 //kategoria artykułu
  8. [comment_num] => //l. kom. artykułu

(wszystkich kolejnych komentarzy nie wyświetla)

Albo chociaż jak pokazać tylko dane komentarza?
wujek2009
Najpierw pobierasz artykuł i później dopiero zapytanie związane z wyświetlaniem komentarzy (nie razem)
czyli na przykład:
  1. // pobierany dane artykułu i sprawdzamy czy w ogóle istnieje, itd
  2. $row = pobierzArtykul($_GET['id']);
  3.  
  4. // komentarze, lista
  5. if ( $row['comment_num'] > 0 )
  6. {
  7. $comments = pobierzKomentarze($_GET['id']);
  8.  
  9. foreach ( $comments as $k => $v )
  10. {
  11. // wyświetlasz liste komentarzy
  12. }
  13.  
  14. }
  15. else
  16. echo 'brak komentarzy - dodaj nowy';


taki mniej więcej zarys
HgReed
KeepItSimpleStupid
Na prawdę - najprostsze rozwiązania są najlepsze wink.gif
Dzięki!
Shili
Ja mam tylko taką uwagę:

w comments masz article_id

Po co więc robić JOINa, jak zwykłe WHERE starczy?

@down
Wiem, natomiast jak zaczynałam pisać posta, to jeszcze nie było odpowiedzi wujka2009 smile.gif
HgReed
Teraz już wiem. smile.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.