Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]Błędne zliczanie ilości wyników
mefistofeles
post
Post #1





Grupa: Zarejestrowani
Postów: 255
Pomógł: 0
Dołączył: 23.06.2009

Ostrzeżenie: (10%)
X----


Mam takie zapytanie:

  1. $sql = 'SELECT id,tytul FROM `ksiazki` WHERE match(tytul) against ("+'.$autor.'*" IN BOOLEAN MODE) GROUP BY tytul order by match(tytul) against("+'.$autor.'*") desc LIMIT ' . $page_query*$na_stronie . ', ' . $na_stronie;


Jak policzyć ogólną liczbę rekordów, które ono zwraca bo mam z tym problem.

Próbowałem np tak:

  1. echo $sqlll = 'SELECT count(*) ilosc FROM `ksiazki` WHERE match(tytul) against ("+'.$autor.'*" IN BOOLEAN MODE)';)';


Ale zwraca mi to całkiem inna liczbę rekordów niż zwraca mi pierwsze zapytanie (usuwając oczywiście desc LIMIT ... )

Jak to inaczej zliczyć ?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
bmL
post
Post #2





Grupa: Zarejestrowani
Postów: 301
Pomógł: 25
Dołączył: 15.07.2007
Skąd: Olsztyn

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


Cytat(mefistofeles @ 21.10.2010, 05:38:44 ) *
  1. $sql = 'SELECT id,tytul FROM `ksiazki` WHERE match(tytul) against ("+'.$autor.'*" IN BOOLEAN MODE) GROUP BY tytul order by match(tytul) against("+'.$autor.'*") desc LIMIT ' . $page_query*$na_stronie . ', ' . $na_stronie;


Nie lepiej użyć DISTINCT skoro i tak nic nie zliczamy?

Drążąc temat dalej to jeżeli mamy fetchować i zliczać xx wyników (gdzie pewnie i tak każdy result zawiera w sobie pole o wartości 1 bo wątpię żeby tytuł książki się powtarzał), to mija się z celem używanie tego count... Już lepiej by było wykonać identyczne zapytanie do tego pierwszego tylko nie pobierać tytułu książki (bo nie potrzebny) i użyć mysql_num_rows();
W skrócie albo wymyślisz zapytanie które to zliczy wszystko razem (nie mam pomysłu jak to zliczyć tak żeby zwróciło w 1 ładnym wyniku) albo nie paćkać się i użyć zwykłego mysql_num_rows().

EDIT: z resztą takie zliczanie pętlą pewnie zwróciło by więcej niż to pierwsze zapytanie bo zliczyło by wszystkie rekordy nawet te powtarzające się.

Przykład:
Kod
ID : tytul

1: A
2: A
3: B
4: C

$q = 'SELECT id,tytul FROM ksiazki GROUP BY tytul';
$r = $q -> fetch_row();
// $r= array(array(1,A), array(3,B), array(4,C));
// $r -> num_rows = 3

$q = 'SELECT count(*) FROM ksiazki GROUP BY tytul';
$r = $q -> fetch_row();
// $r = array(array(2),array(1),array(1));
// gdybyśmy zsumowali to pętlą to wyszło by 4 a nie 3.

O ile mi się nic nie poje*** to się wszystko zgadza (IMG:style_emoticons/default/tongue.gif)

ps. wybaczcie tą wyimaginowaną obsługę sterownika bazy danych (IMG:style_emoticons/default/smile.gif)

Ten post edytował bmL 22.10.2010, 19:14:24
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 5.10.2025 - 06:06