Op dit moment sla ik in een database per klant het de woonplaats op. Deze wordt in de kolom "plaats" gezet.
Nu komt het bijvoorbeeld voor dat er: 6x Amsterdam staat
2x Utrecht etc.
(Allemaal in verschillende rijen natuurlijk).

Nu wil ik een diagram weergeven (http://www.jqueryscript.net/demo/Animated-Circle-Statistics-Plugin-With-jQuery-Canvas-Circliful/)
Die dan bijvoorbeeld aangeeft 35% Amsterdam.
Op dit moment heb ik dit:


<?php
	//Woonplaats
	$query_woonplaats = "SELECT plaats FROM aanvraag LIMIT 0,1";
	$result_woonplaats = mysqli_query($link, $query_woonplaats);
	$i = 1;
	while($woonplaats = mysqli_fetch_object($result_woonplaats)){
		$query_woonplaats_totaal = "SELECT plaats FROM aanvraag WHERE `plaats`='$woonplaats->plaats'";
		$result_woonplaats_totaal = mysqli_query($link, $query_woonplaats_totaal);
		$totaal_woonplaats = mysqli_num_rows($result_woonplaats_totaal);
		$percentage_woonplaats = round(($totaal_woonplaats / $totaal_aantal_rijen * 100), 2);	
		$number = $i++;
		
		echo"<div id=\"WoonStat$number\" class=\"circles\" data-dimension=\"250\" data-text=\"$percentage_woonplaats%\" data-info=\"$woonplaats->plaats\" data-width=\"30\" data-fontsize=\"38\" data-percent=\"$percentage_woonplaats\" data-fgcolor=\"#61a9dc\" data-bgcolor=\"#eee\" data-fill=\"#ddd\"></div>";
	}
?>


Zodra ik dit doe krijg ik dus 6 diagrammen van Amsterdam en 2 van Utrecht, hoe kan ik dit beperken tot 1 diagram per plaats?
Allereerst: een query in een loop is zelden een goede oplossing! Het maakt nu niet veel uit omdat je maar één resultaat hebt in result_woonplaats en dus ook maar één query in de loop doet.

De oplossing is volgens mij is de oplossing een GROUP BY op plaats:

SELECT count(*) as aantal, plaats FROM aanvraag GROUP BY plaats

Het resultaat is dan iets als
Amsterdam | 6
Utrecht | 2

Aanvulling: Als je het percentage wil hebben moet je nog een subquery doen om het totaal aantal aanvragen/gebruikers te bepalen, vervolgens kun je met ROUND afronden

SELECT ROUND((count(*)/(SELECT count(*) FROM aanvraag))*100, 0) as percentage, plaats 
FROM aanvraag 
GROUP BY plaats
Ik hoop dat mensen een plaats kunnen selecteren, in plaats van (hihi) het vrij invullen ervan, want anders kan het gebeuren dat dezelfde plaatsnaam meerdere keren voorkomt met verschillende schrijfwijzen, wat het vrijwel onmogelijk maakt om hier zinnige statistieken mee te bakken.
Thanks voor de input, gelukkig had ik mezelf al ingedekt dat dit niet kon gebeuren.. Er wordt namelijk gebruik gemaakt van postcode huisnummer koppeling..

Reageren