![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 393 Pomógł: 5 Dołączył: 6.02.2003 Skąd: The.Luciferian.Doctrine.p df Ostrzeżenie: (30%) ![]() ![]() |
tak se myslalem
chodzi o to, ze mam tabele, niech bedzie REKORDY w tabeli tej, mam dane o kategoriach ID T C0 C1 1 moj_tytul 1/10 2/20 teraz, chce wyciagnac wszystkie rekordy, ktore maja T LIKE "%zmienna%" jak teraz w tym momencie policzyc wszystkie rekordy; musze pobrac kazdy rekord, zsumowac ich ilosc, a nastepnie pobrac nazwe KATEGORII z oddzielnej tabeli czy jak to zrobic? jak to jest zrobione na allegro albo ebayu? nie wywali sie baza jak bedzie np. 1 mln rekordow? jak to rozwiazac? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 952 Pomógł: 154 Dołączył: 20.01.2007 Skąd: /dev/oracle Ostrzeżenie: (0%) ![]() ![]() |
Ale chodzi Ci o liczbę wierszy w całej bazie spełniającej ten warunek czy liczbę zwróconych w zbiorze wyników? Jeśli używasz stronicowania, a zakładam, że używasz, te wartości mogą być różne. Do zbioru wyników funkcję masz wyżej, do liczenia ogólnego musisz wysłać dodatkowe zapytanie korzystające z SQL-owej funkcji COUNT(). Jednak, jak słusznie zauważyłeś, liczenie w locie wszystkiego może być dość czasochłonne przy dużej bazie, dlatego często stosuje się optymalizacje polegające np. na zapisywaniu liczników bezpośrednio w polach wierszy. Niestety, jeśli chcesz korzystać z LIKE, wtedy takiego licznika nie wygenerujesz, bo musiałbyś trzymać jego wartości dla wszystkich możliwych ciągów, co nie wchodzi w grę (IMG:style_emoticons/default/smile.gif) . Dlatego jedyna sensowna opcja dla Ciebie to skorzystanie z COUNT().
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 7.10.2025 - 11:00 |