ugrás a tartalomhoz

Mysql csoportosítás

MrNemo · 2013. Nov. 27. (Sze), 11.11
Sziasztok
A következő lenne a problémám:
Adott egy tábla :
ID NEV AR UJ
1 elso 5000 I
2 elso 6000 I
3 elso 5000 I
4 masodik 5000 N
5 harmadik 6000 I
6 harmadik 10000 I
7 harmadik 6000 I


Erre ezt a lekérdezést indítom:
$sql = 'SELECT MIN(id) id, ar, nev FROM tabla WHERE uj="I" GROUP BY ar, nev';
Ezt az eredményt kapom:
1 elso 5000
2 elso 6000
5 harmadik 6000
6 harmadik 10000

Ez 4 elem, ami jó viszont ha folytatom:
$c = array_shift (mysql_fetch_row (mysql_query ($sql)));
akkor a $c értéke 7 lesz és itt jön a kérdés, hogy hogyan tudnám megszámolni, hogy a csoportosítás eredménye hány rekordot tartalmaz?
Vagyis a fenti példánál a $c értéke hogy lesz 4
Válaszokat előre is köszönöm
 
1

mysql_num_rows

Poetro · 2013. Nov. 27. (Sze), 11.50
$results = mysql_query ($sql);
$rows = mysql_num_rows($results);
while ($row = mysql_fetch_row($results)) {
  //feldolgozás
}
Egyébként el kellene felejteni a mysql_* függvények használatát, mert a jelenlegi stabil PHP verzióban már elavult (deprecated) a MySQL kiterjesztés, helyette MySQLi-t vagy PDO_MySQL-t kellene használni.
2

Köszönöm válaszod tegnap

MrNemo · 2013. Nov. 27. (Sze), 12.01
Köszönöm válaszod tegnap éjfél körül próbálgattam és a mysql_num_rows eszembe sem jutott.
Tökéletes a megoldás.
Tanácsod megfogadóban, már tanulmányozom a mysqli-t :)
3

Feldolgozás?

Pepita · 2013. Nov. 27. (Sze), 12.13
Ha feldolgozni is akarod az adatokat, akkor foreach vagy while ciklus is kell, abban is tudsz számolni, például ilyesmi (példákat nézd).

Konkrétan a visszaadott sorok számát a mysql_num_rows fv. fogja szolgáltatni, nem érdemes PHP-ben bűvészkedni egyéb fv-ekkel, csak lassabb lesz.

Fontos, hogy ezek a fv-ek PHP 5.5-től nincsenek.
This extension is deprecated as of PHP 5.5.0, and will be removed in the future. Instead, the MySQLi or PDO_MySQL extension should be used.


Szerk.: mivel általában a lekérdezés eredményével további műveletet végzünk PHP-ben, ezért azt egy erőforrásba helyezzük, a példákban ez többnyire a $result. Ezt azért tesszük, hogy ugyanazt a lekérdezést feleslegesen ne futtassuk többször. Itt, ha tényleg csak a sorok száma kell neked, akkor a lekérdezés is lehetne jobb...
4

Általában tetszőleges query

tgr · 2013. Nov. 27. (Sze), 16.06
Általában tetszőleges query eredményének a számosságát a SELECT COUNT(*) FROM (<query>) paranccsal tudod lekérdezni.
5

Szerintem kellenek

Pepita · 2013. Nov. 27. (Sze), 22.42
neki az adatok is, legalábbis a kérdésből ("Ez 4 elem, ami jó") számomra az jön le.