SELECT nyhet_typ,count(*) as items
FROM nyheter
group by nyhet_typ
Jag använder mig av MySQL tillsammans med PHP för mitt hemmagjorda blogsystem. I tabellen för varje inlägg i bloggen har jag ett fält som heter nyhet_typ som innehåller värden som skolan, personligt o.s.v.
Nu till "problemet". Nederst på sidan har jag en förteckning över hur många poster det finns i varje kategori, ex: Humor (5). Detta skriver jag ut med nedanstående kod.
$pers = mysql_query("SELECT nyhet_id, nyhet_typ FROM nyheter WHERE nyhet_typ = 'Personligt'");
$personligt = mysql_num_rows($pers);
$skol = mysql_query("SELECT nyhet_id, nyhet_typ FROM nyheter WHERE nyhet_typ = 'Skolan'");
$skolan = mysql_num_rows($skol);
$kult = mysql_query("SELECT nyhet_id, nyhet_typ FROM nyheter WHERE nyhet_typ = 'Kultur'");
$kultur = mysql_num_rows($kult);
$webb = mysql_query("SELECT nyhet_id, nyhet_typ FROM nyheter WHERE nyhet_typ = 'Web'");
$web = mysql_num_rows($webb);
$kropp = mysql_query("SELECT nyhet_id, nyhet_typ FROM nyheter WHERE nyhet_typ = 'Kroppen'");
$kroppen = mysql_num_rows($kropp);
$lok = mysql_query("SELECT nyhet_id, nyhet_typ FROM nyheter WHERE nyhet_typ = 'Lokalt'");
$lokalt = mysql_num_rows($lok);
?>
<p>Läs alla notiser i en av dessa kategorier:</p>
<ul>
<li><a href="personligt">Personligt</a> (<?=$personligt?>)</li>
<li><a href="skolan">Skolan</a> (<?=$skolan?>)</li>
<li><a href="kultur">Kultur</a> (<?=$kultur?>)</li>
<li><a href="web">Web</a> (<?=$web?>)</li>
<li><a href="kroppen">Kroppen</a> (<?=$kroppen?>)</li>
<li><a href="lokalt">Lokalt</a> (<?=$lokalt?>)</li>
</ul>
vilket innebär att jag måste skriva till en SQL-fråga och en post i listan för varje ny kategori jag kommer på. Dessutom tar koden ganska stor plats och gör därmed filen jobbigare att leta igenom. Vad jag är ute efter är en simplare fråga som bara letar igenom en kolumn efter samma värden och räknar hur många som finns av varje..
