Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MYSQL]Join = za dużo wyników
HgReed
post
Post #1





Grupa: Zarejestrowani
Postów: 59
Pomógł: 0
Dołączył: 13.11.2011

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


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?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
wujek2009
post
Post #2





Grupa: Zarejestrowani
Postów: 350
Pomógł: 31
Dołączył: 23.05.2010

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


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
Go to the top of the page
+Quote Post
HgReed
post
Post #3





Grupa: Zarejestrowani
Postów: 59
Pomógł: 0
Dołączył: 13.11.2011

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


KeepItSimpleStupid
Na prawdę - najprostsze rozwiązania są najlepsze wink.gif
Dzięki!
Go to the top of the page
+Quote Post
Shili
post
Post #4





Grupa: Zarejestrowani
Postów: 1 085
Pomógł: 231
Dołączył: 12.05.2008

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


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

Ten post edytował Shili 18.12.2011, 19:09:27
Go to the top of the page
+Quote Post
HgReed
post
Post #5





Grupa: Zarejestrowani
Postów: 59
Pomógł: 0
Dołączył: 13.11.2011

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


Teraz już wiem. smile.gif
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 Aktualny czas: 20.08.2025 - 03:36