Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: PHP+MySQL tulosrivien laskeminen

Sivun loppuun

Toshiba [01.08.2008 12:20:31]

#

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?

Tumettaja [01.08.2008 12:30:26]

#

Esimerkiksi näin:

$sql = "SELECT * FROM taulu";
$haku = mysql_query($sql);

echo mysql_num_rows($haku);

Antti Laaksonen [01.08.2008 13:25:03]

#

Miksi COUNT-funktion käyttö ei käy?

On aika turhaa hakea kaikki rivit, jos vain haluaa tietää rivien määrän.

Toshiba [01.08.2008 15:23:42]

#

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?

Antti Laaksonen [01.08.2008 15:38:00]

#

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

Ernohac [11.08.2008 22:06:30]

#

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)

TsaTsaTsaa [11.08.2008 22:09:47]

#

Eikö tuo mysql_num_rows kelpaa?

EDIT: Siis tuo joka heti ensimmäisessä vastauksessa neuvottiin.

Ernohac [11.08.2008 22:11:49]

#

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.

Grez [11.08.2008 22:18:36]

#

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.

Metabolix [11.08.2008 22:21:29]

#

SELECT COUNT(*) AS kayttajia, SUM(lkm) AS latauksia FROM taulu;
=> kayttajia 3, latauksia 4563


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta