![]() |
![]() |
![]()
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: 76 Pomógł: 8 Dołączył: 10.11.2010 Skąd: Polska,Katowice Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#3
|
|
![]() 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ę
![]() -------------------- Specjalista ds. głupich i beznadziejnych, Zyx
Nowości wydawnicze: Open Power Collector 3.0.1.0 | Open Power Autoloader 3.0.3.0 |
|
|
![]()
Post
#4
|
|
![]() Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
Różnie ludzie oceniają skuteczność SQL_CALC_FOUND_ROWS, gdyż niektórzy twierdzą, że nie używa indeksów ( z LIKE to i tak traci znaczenie ), ale w tym wypadku mogło by się to sprawdzić.
-------------------- Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
|
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 69 Pomógł: 0 Dołączył: 22.01.2011 Skąd: Murowana Goślina Ostrzeżenie: (0%) ![]() ![]() |
pokaze ci to na przykladzie wyszukiwania w tabeli rekordow i przekazywania do pliku.php
![]() stworz sobie i textbox z wyrazeniem 'wyrazenie'.
czyli jak widzisz $wynik->num_rows; wskazuje na wiersze mozna w ten sposob sprawdzic czy juz cos istnieje i wystawic errora ze nie mozna dodac czegos o takiej samie nazwie bo taki numrows juz jest ;p np. w rejestarcji o heh ![]() Ten post edytował waqmaz 2.02.2011, 13:47:27 |
|
|
![]()
Post
#6
|
|
![]() Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
Taaa waqmaz... I pobranie z bazy miliona rekordów, by sobie to potem php policzył PO przesłaniu tych milionów jest super wydajne
![]() ![]() AndyPSV... Tabela produktów JOIN z tabelą kategorii (może być poprzez tabelę złączeniową ) z warunkiem where i group by po id kategorii. Do tego w select robisz count(id_produktu). Ale oczywiście wszystko zależy od struktury tabel. Ja tylko zgaduję ![]() -------------------- Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
|
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 393 Pomógł: 5 Dołączył: 6.02.2003 Skąd: The.Luciferian.Doctrine.p df Ostrzeżenie: (30%) ![]() ![]() |
skorzystam z http://dev.mysql.com/doc/refman/5.1/en/counting-rows.html
wczoraj sie nieco zamulilem, bo za duzo zrobilem wszystkiego - dzis juz wiem jak to rozwiazac, tak aby bylo super wydajnie i po prostu najlepiej dzieki za pomoc ---
Ten post edytował AndyPSV 2.02.2011, 18:22:35 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 19.07.2025 - 09:52 |