Tervehdys,
Millä muulla vaihtoehdolla voisi laskea taulun rivien lukumäärän ilman että käyttää sql lauseketta count? Tietenkin voi loopitta esim. while lausekkeella:
while($tulosrivi = mysql_fetch_array($result)
mutta saisiko tämän muuten laskettua?
Esimerkiksi näin:
$sql = "SELECT * FROM taulu"; $haku = mysql_query($sql); echo mysql_num_rows($haku);
Miksi COUNT-funktion käyttö ei käy?
On aika turhaa hakea kaikki rivit, jos vain haluaa tietää rivien määrän.
No siis kyseinen kohta tulee hakuun jossa haetaan kaikki rivit joka tapauksessa. Entinen versio toimi coutilla. Itse en ole juurikaan php:n mysql käskyihin perehtynyt mutta löytyykö sieltä käsky jolla saisi esim haettua jonkin tietyn rivin? Esim. rivi nro 11?
Funktio mysql_result palauttaa tietyn rivin tietyn kentän sisällön:
// 11. rivin 3. kenttä echo mysql_result($haku, 10, 2);
Toisaalta oikean rivin voi valita myös kyselyssä:
SELECT * FROM taulu LIMIT 10, 1
Onko jotain keinoa, miten saadaan laskettua rivit COUNTilla, vaikka yhtään saraketta ei voi "ryhmittää".
Esimerkiksi yksi taulurakenne on tälläinen:
+--------------+----------------+ | ip | sivunlataukset | +--------------+----------------+ | 85.12.15.64 | 1351 | | 85.13.41.56 | 1651 | | 169.23.45.55 | 1561 | +--------------+----------------+
Haluaisin laskea tuosta eri kävijät sekä sivunlataukset yhteensä. Miten onnistuu? Täytyykö minun luoda uusi sarake, ja asettaa sen arvoksi aina 1. (SELECT COUNT(ylimaarainen_sarake) AS uniikit, SUM(sivunlataukset) AS sivunlataukset_yhteensa FROM taulu GROUP BY ylimaarainen_sarake)
Eikö tuo mysql_num_rows kelpaa?
EDIT: Siis tuo joka heti ensimmäisessä vastauksessa neuvottiin.
Kelpaa minulle, mutta kysyin tuota Antin kommentin takia.
Antti Laaksonen kirjoitti:
On aika turhaa hakea kaikki rivit, jos vain haluaa tietää rivien määrän.
Erno kirjoitti:
Täytyykö minun luoda uusi sarake, ja asettaa sen arvoksi aina 1. (SELECT COUNT(ylimaarainen_sarake) AS uniikit, SUM(sivunlataukset) AS sivunlataukset_yhteensa FROM taulu GROUP BY ylimaarainen_sarake)
En kyllä keksi yhtään mitään syytä, miksi sinne pitäisi laittaa ylimääräinen sarake. Count(ip) tuottaa täsmälleen saman tuloksen kuin count(ylimaarainen_sarake) jos ylimaarainen_sarake kentässä on aina 1 (eli ei nulleja).
Erno kirjoitti:
Kelpaa minulle, mutta kysyin tuota Antin kommentin takia.
No Antin kommenttihan on naulan kantaan. Eli jos haluaa tietää vain rivien määrän, niin ei ole järkevää lukea kaikkien rivien sisältöä. Tietenkin jos haluat myös ne rivien sisällöt, niin tilanne on eri. Alkuperäinen kysyjähän kuitenkin kysyi miten rivimäärän voi laskea käyttämättä Countia, mutta ei kertonut mitään syytä miksi haluaisi ne laskea muulla tavalla.
SELECT COUNT(*) AS kayttajia, SUM(lkm) AS latauksia FROM taulu;
=> kayttajia 3, latauksia 4563
Aihe on jo aika vanha, joten et voi enää vastata siihen.