Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [mysql]Zliczanie rekordów
Forum PHP.pl > Forum > PHP
Dawior
Witam poszukuje skryptu na zliczanie rekordów z bazy danych jeżeli by ktoś miał taki to bardzo bym prosił. Z góry dziękuję za pomoc+
piotrooo89
do zliczania wykorzystujesz jedną funkcję COUNT. i tyle.
MajareQ
  1. SELECT COUNT(*) AS ile FROM TABELA


  1. <?php
  2. $query = mysql_fetch_assoc(mysql_query("SELECT COUNT(*) AS ile FROM TABELA"));
  3. echo $query['ile'];
  4. ?>
blooregard
Mozna też użyć f-cji SQL_CALC_FOUND_ROWS , a potem SELECT FOUND_ROWS()
piotrooo89
Cytat(blooregard @ 21.04.2009, 20:56:23 ) *
Mozna też użyć f-cji SQL_CALC_FOUND_ROWS , a potem SELECT FOUND_ROWS()


które zrobią dokładnie to samo co COUNT winksmiley.jpg, nie ma różnicy kiedyś testowałem i niczym się nie różniło.
nospor
a na ilu rekordach testowales? 100? no to nie ma roznicy. przetestuj na kilku milionach winksmiley.jpg

kolejna roznica to taka, ze przy count() znasz liczbe rekordow wtedy kiedy chcesz , a przy drugiej metodzie dopiero po pobraniu czesci danych.
blooregard
Cytat
które zrobią dokładnie to samo co COUNT , nie ma różnicy kiedyś testowałem i niczym się nie różniło.

To zależy. Bo np. przy paginacji przydaje się znać, ile rekordów zawierających jakiś warunek spełnia go spośród WSZYSTKICH zawartych w tabeli rekordów (spróbuj to zrobić używając COUNT() )
nospor
Cytat
spróbuj to zrobić używając COUNT()
aleś to teraz grypsa walnal.... winksmiley.jpg
blooregard
Cytat
aleś to teraz grypsa walnal....

Tzn?
piotrooo89
Cytat(blooregard @ 21.04.2009, 21:17:58 ) *
To zależy. Bo np. przy paginacji przydaje się znać, ile rekordów zawierających jakiś warunek spełnia go spośród WSZYSTKICH zawartych w tabeli rekordów (spróbuj to zrobić używając COUNT() )


przecież te funkcje działają prawie tak samo. różnią się tym co napisał ~nospor pare postów wyżej.
nospor
  1. SELECT count(*) WHERE blabla=blabla

i juz masz ile rekordow spelnia jakis twoj warunek
blooregard
Cytat
i juz masz ile rekordow spelnia jakis twoj warunek

@nospor - tak, ale z ILU łącznie ? Hę ?

Przykład: masz 100 rekordów, z czego warunek _WAR_ spełnia 10
Wybierasz je zapytaniem:
SELECT COUNT(*) FROM tabela WHERE _WAR_;

W wyniku dostajesz 10.
A teraz:
Wyświetl mi z użyciem tylko COUNT() tekst:
"Znaleziono 10 wyników spełniających _WAR_ spośród wszystkich 100 istniejących w bazie." - nie wiedząc, że tych wszystkich jest 100.
nospor
  1. SELECT count(*) countall ,count(IF(blabla=blabla,1,NULL)) countpart FROM tabela

tongue.gif
blooregard
O rzesz Ty orzeszku.... winksmiley.jpg
Cwane.
Dobra, da się. Oddalam wniosek z SQL_CALC_FOUND_ROWS.
melkorm
[offftopic]

z tym SQL_CALC_FOUND_ROWS, to ten plus jest że tak naprawde ma się jedno zapytanie dla mnie to jest wygodniejsze i sądze że dla SQL'a łatwiej zrobić takie coś :
  1. SELECT SQL_CALC_FOUND_ROWS * FROM TABLE WHERE 'tutaj n-warunkow' LIMIT 0, 10;
  2. SELECT FOUND ROWS();

niż :
  1. SELECT COUNT(*) FROM TABLE WHERE 'tuta j n- warunków';
  2. SELECT * FROM TABLE WHERE 'tutaj n-warunków' LIMIT 0, 10;


Ale było to chyba omawiane już w innym topicu, moim zdaniem jest to wygodniejsza metoda i nawet z logicznego punktu widzenia szybsza. (testowałem to na bodajże 100k rekordów w nocy na serverze dość sporego portalu i nie byłó różnicy czy dodam SQL_CALC_FOUND_ROWS czy nie, a po co wykonywać dwa tak skomplikowane zapytania? - jeżeli się myle prosze mnie poprawić :] )
[/offtopic]
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.