![]() |
![]() ![]() |
![]() |
-Wieviór- |
![]()
Post
#1
|
Goście ![]() |
Wyświetlam na stronie głównej newsy, przy każdym mam podaną ilość komentarzy.
W bazie danych są tabele: Kod news id | tytul | tresc komentarze id | news_id | tresc Do tej pory rozwiązywałem to tak, że był wczytywany news i do zliczania komentarzy taka instrukcja:
No ale to na pewno nie jest najlepszy sposób. Teraz robię małą optymalizację i zastanawiam się jak to rozwiązać. Czy robić jakiś UNION, JOIN? Czy może dodać do tabeli news pole komentarze, i po prostu dodawać tam jedynkę przy każdym kolejnym dodawaniu komentarza? (to mi nieco nie pasuje, bo jeśli będę usuwał?) |
|
|
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
Ja bym to zrobił w ten sposób: najpierw pobieram newsy, które są do wyświetlenia i wczytuję do tablicy. Równocześnie tworzę tablicę zawierającą id wybranych newsów. Następnie robię drugie zapytanie:
gdzie (1, 2, 3) powstaje na podstawie tablicy samych id. Dane z zapytania również pakujemy do tablicy i gra muzyka. Wyświetlamy! 2 zapytania i po kłopocie. Ten post edytował phpion 3.02.2008, 13:37:47 |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 611 Pomógł: 19 Dołączył: 28.02.2005 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
dla optymalizacji raczej dodałbym kolumne w newsie z ilością komentarzy i ustawił odpowiednie triggery na bazce przy dodawaniu i kasowaniu komentarzy i mamy 1 zapytanie zamiast 2
![]() (czasami taki redundancje danych są bardzo wskazane, zwłaszcza przy dużych serwisach) -------------------- |
|
|
![]()
Post
#4
|
|
![]() Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
@sticker:
No fakt, ale wiąże się to, jak słusznie zauważyłeś, z triggerami. Poza tym dodanie takiej funkcjonalności w momencie, gdy projekt jest już w jakiejś fazie (a pewnie jest) wymagałoby ręcznej aktualizacji dotychczasowych danych. Ale prawda jest taka: triggerek w tym momencie to jest to <ok> ![]() |
|
|
-Wieviór- |
![]()
Post
#5
|
Goście ![]() |
Serwis jest w fazie (gazie!
![]() EDIT: A jeszcze jedno, czy jest sposób, żeby dodać po prostu 1 do pola INT, czy musiałbym wyciągać wartość, dodawać i zapisywać? EDIT2: Dzięki ;] Ten post edytował Wieviór 3.02.2008, 13:53:06 |
|
|
![]()
Post
#6
|
|
![]() Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 12.06.2025 - 17:11 |