Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Zliczanie rekordów] zawartych w bazie
Forum PHP.pl > Forum > Bazy danych
pawel007
Pytanie - pewnie trywialne, ale nie mogę odpowiedzi znaleźć na forum!

Mianowicie, potrzebuję wyciągnąć z bazy danych (konkretnie z kilku tabel) ilość wszystkich rekordów! Jak to zrobić? Prosżę o pomoc?
adwol
Cytat
Mianowicie, potrzebuję wyciągnąć z bazy danych (konkretnie z kilku tabel) ilość wszystkich rekordów! Jak to zrobić? Prosżę o pomoc?

Po pierwsze to nie to forum. Problemy bazodanowe proszę umieszczać na forum Bazy danych. Przenoszę wątek.

Co do meritum:
[sql:1:6273c73fb4]select count(*) from ...[/sql:1:6273c73fb4]
W miejsce ... wstaw sobie odpowiednie tabele.
POLVIP
Nie wiem czy adwol zrozumial dobrze pytanie czy moze ja sie myle ale odpowied jest

[php:1:1a343df2e1]<?php
/* polacz sie do db */
mysql_connect ('localhost','user','pass');
mysql_select_db ('test');

/* zbuduj i wyslij query */
$query = "SELECT * FROM sometable ORDER BY $order";
$result = mysql_query ($query);

/* sprawdz czy cos wrocilo */
$numrows = mysql_num_rows($result);
if ($numrows == 0) {
echo "Nie ma danych w bazie!";
exit;
}
?>[/php:1:1a343df2e1]

numer ile elementow jest w db jest w $numrows

to mozesz powtorzyc na kazda tabele ktora cie interesuje
scanner
POLVIP: masz warning za nabijhanie postów.
Nie wiesz o czym piszesz, nie znasz poleceń MySQL.
Po chere wybierac wszystko z bazy (miliony moze rekordow) skoro MySQL potrafi policzyc to sam?
POLVIP
sadzisz ze to jest gorsza odpowiedz od adwol?

nabijanie postow?

moze wykasujesz mi do 0 - nie o to mi chodzi....
adwol
Cytat
sadzisz ze to jest gorsza odpowiedz od adwol?

Myślę, że tak, ponieważ:
:arrow: musisz wyciągnąć te wszystkie wiersze, żeby je policzyć, a pobranie count(*) nie dotyka nawet danych w tabeli
:arrow: nie wiadomo po co te dane sortujesz (pomijając to, że nie wiadomo po czym)
Powoduje to, że Twoja metoda jest bardziej czasochłona i daje niepotrzebną pracę DBMSowi.
Poza tym, autor wątku nigdzie nie zaznaczył, że chodzi mu o MySQLa więc Twoje rozwiązanie może okazać się zupełnie błędne.
Jabol
Cytat
sadzisz ze to jest gorsza odpowiedz od adwol?

nabijanie postow?

moze wykasujesz mi do 0 - nie o to mi chodzi....
po prostu zostałeś powiadomiony, że jest lepszy sposób, to nie miało żadnych podtekstów - nie najeżdżaj na nas.
a count() jest naprawdę lepsze
GeoS
[sql:1:4d633636f1]SELECT count(tabela1.id) as tabela_1, count(tabela2.id) as tabela_2, ...
FROM tabela1, tabela2;[/sql:1:4d633636f1]
adwol
Cytat
[sql:1:f6fabd4176]SELECT count(tabela1.id) as tabela_1, count(tabela2.id) as tabela_2, ...
FROM tabela1, tabela2;[/sql:1:f6fabd4176]

Chyba nie o to chodziło, bo każdy z tych count(...) zwróci Ci iloczyn ilości wierszy w obu tabelach (złączenie kartezjańskie).
Barszczu
hmm
Po połączeniu się w php z bazą zadałem:
[php:1:4df3c42184]
$query = "SELECT count(*) FROM lista";
$ile = mysql_query("$query");
echo("Mamy ".$ile." fanów");
[/php:1:4df3c42184]

Wg. mnie wszystko jest dobrze, lecz zamiast echa
Kod
Mamy 2 fanów
- bo tyle jest w bazie, otrzymuję:
Kod
Mamy Resource id #5 fanów


Co może byc nie tak?

[edit] Dodam tylko, że [sql:1:4df3c42184]SELECT count( * )
FROM lista [/sql:1:4df3c42184] wykonane w phpmyadminie zwraca wartość 2.... [/edit]pozdro
BzikOS
[php:1:fadd480be0]<?php
list( $ile ) = @mysql_fetch_row( @mysql_query( 'SELECT count(*) FROM lista' ) );
echo( 'Mamy ' . $ile . ' fanów' );
?>[/php:1:fadd480be0]

I będzie cacy winksmiley.jpg
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.