25. april 2007 - 10:49Der er
8 kommentarer og 1 løsning
Tælle alle forekomster af tal i udvalgte fields i SQL table
Hej.
jeg har en sql-tabel ved navn "tdc_navn" med flg. fields:
tdc_id, tdc_title, tdc_1, tdc_2, tdc_3 og tdc_4
i de sidste fire har jeg jeg en række tal, som jeg gerne vil tælle. Det samme tæl kan sagtens forekomme i både tdc_1 de andre (f.eks. tdc_3) i samme række. Jeg vil dog kun tælle forekomster i de 4 fields - ikke de to første fields. Derefetr skal den opstille talene sorteret efter havd der er flest af. sådan her:
Der er 4 forekomster af tallet 55 Der er 2 forekomster af tallet 6
Jeg har forsøgt mig med noget count, men det vil ikke rigtig, som jeg vil - den tæller ikke rigtigt - som om den kun tæller i et et af de 4 fields - eller at den ikke tæller det som 2, hvis der er to forekomster i samme række.
Håber I forstår, hvad jeg mener - Ser frem til jeres svar.
Hov, nu når jeg tænker over det, så hørte det hrr vel egentlig bedre til under SQl databaser. Forhåbentlig, er der en venlig sjæl, der kan hjælpe mig alligevel, da det trods alt skal printes ud i PHP.
Der skal ses på både num1 og num2 - da formålet med disse er det samme.
Hvordan får jeg den til at printe flg. ud:
4 går igen 5 gange 2 går igen 3 gange 6 går igen 1 gange 3 går igen 1 gange
Den skal altså counte i num1 og num2 - men ikke id - jeg ville godt selv kunne det, hvis det bare var num1, den skulle tælle, men ved ikke hvordan jeg får den til at tælle i begge to på en gang.
Jeg kan ikke lige lure hvordan det skal laves i en sql. Men man kan ihf lave det på følgende måde:
$total = array(); $query1 = mysql_query("SELECT num1 AS key, COUNT( id ) AS value FROM table_name GROUP BY num1"); if(mysql_num_rows($query1)>0) { while($row1 = mysql_fetch_assoc($query1)) { $total[$row1['key']] = $row1['value']; } }
$query2 = mysql_query("SELECT num2 AS key, COUNT( id ) AS value FROM table_name GROUP BY num2"); if(mysql_num_rows($query2)>0) { while($row2 = mysql_fetch_assoc($query2)) { if(array_key_exists($row2['key'],$total)) { $total[$row2['key']] += $row2['value']; } else { $total[$row2['key']] = $row2['value']; } } }
Tak for svaret :-) Jeg er dog ikke meget for at lave så mange connections til databasen, da jeg jo har 9 fields, som der skal tælles i. Jeg tror jeg vil prøve at spørge ovre i database-forummet, hvilket jeg naturligvis skulle have gjort fra starten.
Men tak for din hjælp, igen, igen - bare smid svar :-)
Du må gerne få et svar, men synes dog ikke mit svar er alle point værdige! Hvis du får et svar i mysql kategorien, må du gerne smide svaret her, så jeg kan se hvordan det evt. kan laves.
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.