Hallo

Ik probeer van een tabel in de database de records in verschillende kolommen apart te tellen.

Voorbeeld: kolom Naam bevat 13 records
kolom Woonplaats 8 records
Of Naam waar naam = Jan

$var naam = 13;
$woonplaats = 8 enz.

Hoe krijg ik die terug in een $var

Met count aan de slag gegaan maar kom er niet verder mee
>> Met count aan de slag gegaan maar kom er niet verder mee

Laat om te beginnen eens zien wat je dan met SELECT COUNT() hebt geprobeerd?
Je schrijft:
Voorbeeld: kolom Naam bevat 13 records
kolom Woonplaats 8 records
???
Laat ook je datamodel eens zien. Hoe ziet je tabel(len) eruit?
Voorbeeld

+-------+--------------+------+-----+
| id    | Naam         | woonplaats | 
+-------+--------------+------+-----+
| 1     | Jan          | plaats1    |
| 2     | Kees         | plaats2    |
| 3     | Jan          | plaats3    |
| 4     | Piet         | plaats4    |
+-------+--------------+------+-----+

 $query_test = $mysqli->query("SELECT *, COUNT(woonplaats) FROM test");

Gewenste uitkomst 2

$query_test = $mysqli->query("SELECT *, COUNT(naam) FROM test WHERE naam = Jan");

Gewenste uitkomst 2
bedoel je dat er in een tabel bijvoorbeeld 20 records zijn, en dat bij 13 daarvan de kolom Naam niet leeg is (null of lege string)
en in 8 gevallen is de kolom Woonplaats niet leeg.

Of noem je de tabellen kolom? en bedoel je te zeggen dat je het aantal records in de tabel woonplaatsen wilt tellen?

[size=xsmall]Toevoeging op 15/01/2016 11:33:44:[/size]

ah. het eerste geval dus.



[size=xsmall]Toevoeging op 15/01/2016 11:34:31:[/size]

select * en count() in 1 query gaat zelden goed.

zeker aangezien je group-by vergeet

http://wiki.pfz.nl/group-by

[size=xsmall]Toevoeging op 15/01/2016 11:36:05:[/size]

SELECT SUM(woonplaats != '') FROM tabel;

en

SELECT SUM(naam = 'Jan') FROM tabel

of (mijn voorkeur)

SELECT COUNT(1) FROM tabel WHERE naam = 'Jan';
Ik wil het aantal records in woonplaats tellen in het voorbeeld dus 4 (eigenlijk had ik die ook moeten aanvullen tot 4 , is inmiddels gebeurd)

Verder in Naam het aantal records tellen met naam Jan

[size=xsmall]Toevoeging op 15/01/2016 12:09:09:[/size]

Bedankt ,

Onderstaande is bij mij nog niet goed: Undefined index: SUM(woonplaats)


$result = $MySQLiconn->query("SELECT SUM(woonplaats != '') FROM test;");
while ($row = $result->fetch_array()) { 

 echo $row['SUM(woonplaats)'];
  } 
SUM() telt op en COUNT() telt. En je kunt geen strings optellen.


SELECT COUNT(woonplaats)
  FROM test
 WHERE woonplaats != ''


Beter kun je NULL in plaats van de lege string gebruiken: COUNT() telt NULL namelijk niet mee.

$result = $MySQLiconn->query("SELECT COUNT(1) AS teller FROM test WHERE woonplaats IS NULL ;");
while ($row = $result->fetch_array()) { 

 echo $row['teller'];
  }

Is het mogelijk deze eens goed te plaatsen:


$result = $MySQLiconn->query("SELECT COUNT(woonplaats != '') FROM test WHERE woonplaats != ''");
while ($row = $result->fetch_array()) { 

  }
 echo $row['SUM(woonplaats)']; // moet 4 zijn in voorbeeld
Je hebt geen while nodig als je één rij ophaalt:


<?php
$result = $MySQLiconn->query("SELECT COUNT(woonplaats) AS aantal FROM test WHERE woonplaats != ''");
$row = $result->fetch_array();
echo $row['aantal'];
?>
Bedankt ! dit werkt

Opmerking

Waarom zal dit: WHERE naam == Jan"

onderstaande foutmelding opleveren:
Call to a member function fetch_array() on boolean in...........

Reageren