Cytat(thek @ 3.03.2010, 09:28:36 )

Ponieważ powinieneś połączyć te posty z tematami, ale w warunku nie określasz, że posty mają być tylko z tych tematów już ograniczonych. Najlepiej jest połączyć posty z tematami po polu łaczącym i w warunku dodać, że interesują Cię tylko rekordy, gdzie kategoria ma określoną wartośc. To już się realizuje nie łaczeniem tabel poprzez przecinek, ale używając ON i wskazując po czym łączysz obie tabele.
A więc:
SELECT t.title, p.post FROM posts p JOIN topics t ON p.title_id = t.id WHERE t.forum_id IN (7)
Zwróć uwagę na stosowanie aliasów (p oraz t). Używam ich by odróżnić kolumny w obu tabelach. W obu bowiem na bank jest kolumna ID i bez tego baza nie wiedziała by które id używam do łączenia. Przez alias wie, że t.id to id w tabeli topics, a dodatkowo, że forum_id ma wyszukać także w tej tabeli. Zaś pola ma z określonych tabel także wybierać poprzez sprawdzenie aliasu. Poza tym polecam Ci sprawdzić co powoduje użycie zamiast JOIN także LEFT JOIN oraz RIGHT JOIN. Myślę, że może Cię to zaciekawić.
Dzięki! działa perfekcyjnie poza szczegółami:
W tabeli
posts nie ma czegoś takiego jak
title_id jest
topic_id a w
topics nie ma
id tylko
tidW rezultacie poprawnie działający skrypt wygląda tak:SELECT t
.title
, p
.post FROM posts p
JOIN topics t ON p
.topic_id
= t
.tid WHERE t
.forum_id IN
(11)
Z 20 minut się głowiłem o co w tym kodzie w ogóle chodzi, racją jest, że bliższe zapoznanie się z php nie jest wcale takie trudne, może i jest frustrujące ale efekty mniam.
Opóźniły mnie problemy z serwerem o ładne dwa tygodnie. Wracając do meritum, owe moje głowienie trapiło czy przypadkiem tytuły się nie powtarzają, wyświetlałem listę nazw tytułów gdyż nie zauważyłem 2x wierszy[0] co oczywiście dawało podwójny efekt nazw tytułów; po usunięciu tego błędu, wszystko wróciło do normy jednak, nadal niektóre tytuły się powtarzały a jasne przecież jak słońce jest, że tematy zawierały również odpowiedzi użytkowników! i co naturalne w tym przypadku będzie wyświetlanie ich postów; tak już jest jak szuka się dziury w szczegółach a każda treść pod tym samym tytułem się różniła
.
Dlatego mam do ciebie kolejne pytanie thek oraz do innych jaki parametr dodać do skryptu by wyświetlało tylko pierwsze posty z tematów.EDIT:
Poradziłem sobie samodzielnie:
SELECT t.title, p.post FROM posts p JOIN topics t ON p.topic_id = t.tid WHERE t.forum_id IN (11) AND p.author_id IN (2)
Jest też drugi sposób
new_topicSELECT t.title, p.post FROM posts p JOIN topics t ON p.topic_id = t.tid WHERE t.forum_id IN (11) AND p.new_topic IN (1)
Działa poprawnie i nie występują problemy w obu przypadkach.