24. oktober 2008 - 21:25Der er
26 kommentarer og 1 løsning
En masse counts til en Tabel
Hey eksperter.
Har nu fået en side op hvor alle mine billeders navne og deres kategori_id ligger. Selve billeder ligger i en mappe.
Men på min forside, har jeg en masse kategoriér.
F.eks. Ferie, arbejde, fest og en masse andre. ca 30 stk's
Jeg ville så gerne ud for hver kategori f.eks Ferie ha at der står Ferie (20) 20 skal stå for at der findes 20 billeder i databasen som hører under denne kategori.
Jeg kan kun den meget tunge måde, med en query for hver eneste kategori, så ville høre om der ikke findes en nemmere metode?
Men er det nemmere at man laver en register tabel som + eller - med antal billeder til hver kategori? for tror det bliver en for stor load hvis den skal counte dem hver gang siden bliver loadet?
Nu når jeg sidder og kigger på det. Så forstår jeg ikke helt. c.category hvor kommer cét fra? og pictures p hvor kommmer pét fra? og nu skriver antal, jeg har ikke i nogen tabeller en række der hedder antal. Håber du vil hjælpe da jeg ikke har brugt inner join før eller count for den sags skyld, kun insert, update, select and so on.
$sql = mysql_query("SELECT COUNT(*) AS NumOfPics, navn FROM billeder INNER JOIN ketagorier ON billeder.kategori=kategorier.navn GROUP BY kategorider.id");
Dette virker i så fald at tabellen med kategorier hedder 'kategorier', tabellen med billeder hedder billeder og at der i tabellen kategorier er et navn med kategori der hedder navn.
Du kan så udskrive med:
while($row = mysql_fetch_assoc($sql)) { echo $row['navn']."; indeholder ".$row['NumOfPics']." billede(r).<br>"; }
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource
Og det må jo være at sql'en er forkert.
Men som jeg læser sql'en så betyder det:
den skal tælle antal (som ikke er en række i min database) , category_id fra pictures og så hopper jeg af.
Som sagt har jeg disse 2 tabeller:
pictures: ------------------ picture_id file_name category_id - dette id blir brugt til at finde ud af hvilken category det hører id
category: ------------------ category_id - dette er hvad category_id fra pictures bruger til at finde hinanden category - dette er bare navnet på categori'en
$sql = mysql_query("SELECT COUNT(*) AS NumOfPics, category_id FROM pictures INNER JOIN category ON pictures.category_id = category.category_id GROUP BY category.category_id");
$sql = mysql_query("SELECT COUNT(*) antal, c.category cat FROM pictures p INNER JOIN category c ON p.category_id = c.id GROUP BY c.id") or die(mysql_error());
$sql = mysql_query("SELECT COUNT(*) antal, c.category cat FROM pictures p INNER JOIN category c ON p.category_id = c.category_id GROUP BY c.category_id") or die(mysql_error());
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.