Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [mysql]Zliczanie rekordów
Dawior
post 21.04.2009, 19:42:55
Post #1





Grupa: Zarejestrowani
Postów: 81
Pomógł: 0
Dołączył: 15.03.2008

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


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+
Go to the top of the page
+Quote Post
piotrooo89
post 21.04.2009, 19:45:15
Post #2


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




do zliczania wykorzystujesz jedną funkcję COUNT. i tyle.


--------------------
Go to the top of the page
+Quote Post
MajareQ
post 21.04.2009, 19:51:53
Post #3





Grupa: Zarejestrowani
Postów: 382
Pomógł: 22
Dołączył: 21.05.2007
Skąd: Elbląg

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


  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. ?>
Go to the top of the page
+Quote Post
blooregard
post 21.04.2009, 19:56:23
Post #4


Newsman


Grupa: Moderatorzy
Postów: 2 033
Pomógł: 290
Dołączył: 21.12.2007
Skąd: Łódź




Mozna też użyć f-cji SQL_CALC_FOUND_ROWS , a potem SELECT FOUND_ROWS()


--------------------
Life's simple... You make choices and don't look back...
Go to the top of the page
+Quote Post
piotrooo89
post 21.04.2009, 20:00:13
Post #5


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




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.


--------------------
Go to the top of the page
+Quote Post
nospor
post 21.04.2009, 20:05:13
Post #6





Grupa: Moderatorzy
Postów: 36 455
Pomógł: 6292
Dołączył: 27.12.2004




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.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
blooregard
post 21.04.2009, 20:17:58
Post #7


Newsman


Grupa: Moderatorzy
Postów: 2 033
Pomógł: 290
Dołączył: 21.12.2007
Skąd: Łódź




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() )


--------------------
Life's simple... You make choices and don't look back...
Go to the top of the page
+Quote Post
nospor
post 21.04.2009, 20:20:04
Post #8





Grupa: Moderatorzy
Postów: 36 455
Pomógł: 6292
Dołączył: 27.12.2004




Cytat
spróbuj to zrobić używając COUNT()
aleś to teraz grypsa walnal.... winksmiley.jpg


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
blooregard
post 21.04.2009, 20:24:59
Post #9


Newsman


Grupa: Moderatorzy
Postów: 2 033
Pomógł: 290
Dołączył: 21.12.2007
Skąd: Łódź




Cytat
aleś to teraz grypsa walnal....

Tzn?


--------------------
Life's simple... You make choices and don't look back...
Go to the top of the page
+Quote Post
piotrooo89
post 21.04.2009, 20:25:11
Post #10


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




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.

Ten post edytował piotrooo89 21.04.2009, 20:25:43


--------------------
Go to the top of the page
+Quote Post
nospor
post 21.04.2009, 20:25:51
Post #11





Grupa: Moderatorzy
Postów: 36 455
Pomógł: 6292
Dołączył: 27.12.2004




  1. SELECT count(*) WHERE blabla=blabla

i juz masz ile rekordow spelnia jakis twoj warunek


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
blooregard
post 21.04.2009, 20:31:28
Post #12


Newsman


Grupa: Moderatorzy
Postów: 2 033
Pomógł: 290
Dołączył: 21.12.2007
Skąd: Łódź




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.


--------------------
Life's simple... You make choices and don't look back...
Go to the top of the page
+Quote Post
nospor
post 21.04.2009, 20:35:53
Post #13





Grupa: Moderatorzy
Postów: 36 455
Pomógł: 6292
Dołączył: 27.12.2004




  1. SELECT count(*) countall ,count(IF(blabla=blabla,1,NULL)) countpart FROM tabela

tongue.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
blooregard
post 21.04.2009, 20:41:00
Post #14


Newsman


Grupa: Moderatorzy
Postów: 2 033
Pomógł: 290
Dołączył: 21.12.2007
Skąd: Łódź




O rzesz Ty orzeszku.... winksmiley.jpg
Cwane.
Dobra, da się. Oddalam wniosek z SQL_CALC_FOUND_ROWS.


--------------------
Life's simple... You make choices and don't look back...
Go to the top of the page
+Quote Post
melkorm
post 21.04.2009, 21:51:47
Post #15





Grupa: Zarejestrowani
Postów: 1 366
Pomógł: 261
Dołączył: 23.09.2008
Skąd: Bydgoszcz

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


[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]

Ten post edytował melkorm 21.04.2009, 21:52:51


--------------------
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 23.04.2024 - 19:20