Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Struktura bazy danych forum., Jak zrobić aby było naj naj naj.
marshallb
post
Post #1





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 15.02.2007

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


Chciałem zrobić forum opierające się na prostych tabelach.

Tematy
id, tytul, autor_id

Posty
id, temat, data, autor_id, tresc

Userzy
id, imie

Wszystko z początku jest tak idealnie proste ale... gdybym chciał zrobić teraz bardzo podstawową rzecz jaką jest wyświetlanie posortowanych tematów w których ktoś się ostatnio wypowiadał musiałbym w zapytaniu:
1. Znaleźć najnowsze posty z niepowtarzającymi się 'temat'.
2. Przyłączyć 'imie' autora.
3. Przyłączyć 'tytul' i 'autor_id' tematu
4. Przyłączyć 'imie' autora tematu.

Wyszłoby z tego dużo JOINów. Tylko stwierdzając po ostatnich poszukiwaniach jest to w ogóle niemożliwe ponieważ odnajdując najnowsze posty poprzez MAX(data) i GROUP BY 'temat' nie otrzymuje się wcale rekordu zawierającego tę skrajną wartość. Manual MySQL podaje takie głupie rozwiązanie - nie dostaje rekordu tylko rekord zawierający skrajną wartość, a takich może być wiele.

Innym sposobem na sortowanie takiej listy mogłoby być wyszukanie tematów i posortowanie ich wg dat postów, ale wtedy też trzeba GROUP BY 'temat'...

Pewnie zrobienie takiego jednego skomplikowanego zapytania jest mniej wydajne (o ile możliwe bo mi się nie udało) niż umieszczenie w tabeli Tematy nowej kolumny 'ostatni_post_id' i 'ostatni_post_data' i zmienianie jej za każdym razem kiedy dodaje się lub usuwa ostatniego posta.
Czy ktoś próbował?

Jak budujecie fora?
Go to the top of the page
+Quote Post

Posty w temacie


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 - 17:31