Mysql [złożone zapytanie]


(jmmzon) #1

Mam bazę w której mam dwie tabele:

  1. posts (post_id,topic,date,text,user_id, forpost)

  2. users (user_id, login,password,...)

w pierwszej tabeli jeżeli forpost=0 to jest to temat, jeżeli zaś jest to inna liczba, określa ona post_id do którego komentarz się odnosi.

W wyniku zapytania chciałbym otrzymać:

post_id, topic,date,login,ile

gdzie ile jest to liczba komentarzy do danego tematu. I teraz nie wiem jak to zrobić za pomocą JEDNEGO zapytania. Czy byłby ktoś skłonny mi pomóc ?


(batmomobil) #2

Nie mogę cię zrozumieć chodzi łączenie zapytania to używa się JOIN.


(jmmzon) #3

Ok, wiem jak zastosować join, zapytanie byłoby mniej więcej takie:

"SELECT topic, post_id, date, login FROM posts INNER JOIN users ON posts.user_id = users.user_id WHERE posts.forpost 0".

Ale, chcę jeszcze policzyć ile jest innych wpisów w tabeli odnoszących się do poszczególnych tematów (przypominam, gdy forpost="nr" oznacza to że ten "nr" jest indeksem tematu


(Prezes333) #4
SELECT p.topic, p.post_id, p.date, u.login, COUNT(c.post_id) as ile FROM posts p JOIN users u ON p.user_id = u.user_id JOIN posts c on c.forpost = p.post_id WHERE p.forpost = 0 GROUP BY p.post_id, p.topic, p.date, u.login;

Ale głowy sobie uciąć nie dam, że zadziała