Beste forumleden,

Ik ben nog een beginner op MySQL gebied maar vroeg mij af hoe ik een bepaald woord uit een bepaalde kolom kan laten tellen.
Dus als ik heb:
Id - Achternaam
1 - Jansen
2 - Zomer
3 - Jansen

Dat ik dan automatisch in php kan laten weergegeven, de achternaam Jansen is '2' keer voorgekomen.

Alvast bedankt!

Lasse
Uiteraard!

SELECT
    Achternaam,
    COUNT(Achternaam) AS aantal
FROM
    tabel
GROUP BY
    Achternaam

Dit is de query die je wilt gebruiken...
Er moet dan ook een index op Achternaam toch?

Tenminste als er heel wat records in komen.
Jep, in een tabel met veel records zal dat met deze query zeker een snelheidswinst opleveren.
Het wordt een tabel met ongeveer 400 rijen en 10 kolommen. Is het dan zinvol om de index toe te passen? En hoe pas ik deze index dan toe? Een link naar een tutorial/script is ok goed.
Ok bedankt!
Lasse schreef op 20.12.2007 20:16
Het wordt een tabel met ongeveer 400 rijen en 10 kolommen. Is het dan zinvol om de index toe te passen? En hoe pas ik deze index dan toe? Een link naar een tutorial/script is ok goed.
400? Dat is dan 400 x niks. Pas bij een paar miljoen records begint het echt wat te worden, bij 400 miljoen kun je spreken van 'groot'. Wanneer jij voor de id's een INT gebruikt, kun je zo'n 4 miljard records aanmaken, bij een BIGINT nog véél meer.

Mensen denken klein, databases werken in het groot.
@Frank TS zegt ook niet dat het groot wordt :)
Klaasjan Boven schreef op 24.12.2007 17:34
@Frank TS zegt ook niet dat het groot wordt :)
Dat weet ik, maar ik wilde hem even duidelijk maken dat 400 records onvoorstelbaar weinig is voor een database.

Tenminste, wanneer je geen terrabytes aan data in 1 enkel record op gaat slaan. In PostgreSQL geldt een maximum van 32TB per tabel en 1.6TB per record. MySQL kan minder data kwijt, maar nog altijd achtelijk veel.
pgFrank schreef op 24.12.2007 17:39
Dat weet ik, maar ik wilde hem even duidelijk maken dat 400 records onvoorstelbaar weinig is voor een database.


Bedankt ;) k heb dan ook geen gebruikt van de indexen maar van onderstaant script:

<?php
mysql_connect("localhost", "username", "password"); 
mysql_select_db("database") or die( "Unable to select database"); 

$query = "SELECT achternaam, COUNT(achternaam) AS aantal FROM tabel WHERE achternaam = 'Jansen' GROUP BY achternaam";
  $resultaat = mysql_query($query);
  while ($rij = mysql_fetch_array($resultaat)) {
  $achternaam = $rij["achternaam"];
  $totaal = $rij["aantal.achternaam"];

$totaal = $rij['aantal'];

  echo"De achternaam $achternaam is $totaal keer voorgekomen.<br>\n";
  }
?>

Dit script werkt maar nu ontstaat er een probleem. Als er in het veld Achternaam bijvoorbeeld 'Jansen Minkes' is ingevuld telt het script deze waarde niet. Alleen als er alleen maar 'Jansen' is ingevuld en niet meer. Hoe kan ik er voor zorgen dat deze toch ook geteld wordt?

Reageren