23. oktober 2008 - 12:43
Der er
8 kommentarer og 1 løsning
Tæl antal i en række
Hej, jeg kender godt funktionen: COUNT() Men hvis jeg har: en række med: felt1 = 1 felt2 = null felt3 = data felt4 = null felt5 = data felt6 = null Så vil jeg gerne have en SQL som kan give mig noget ala: SELECT COUNT(where field = null) FROM tabel WHERE felt1 = 1 Og svaret skal jo så være 3, da der er 3 felter som har NULL stående i datafeltet.
Annonceindlæg fra Conscia
23. oktober 2008 - 13:48
#1
Følgende kode i php giver mig ønskede resultat: $query = mysql_query("SELECT * FROM `tabel` WHERE `id` = 1 LIMIT 1"); if(myqsl_num_rows($query)==1){ $antal = 0; foreach($row = mysql_fetch_row($query) AS $data){ if($data != '0' && empty($data)) $antal++; } } echo 'Antal NULLer : ' . $antal;
23. oktober 2008 - 22:21
#2
Prøv: SELECT COUNT(*)-COUNT(felt) FROM tabel WHERE andetfelt=X COUNT(*) bør tælle alle rækker mens COUNT(felt) kun bør tælle de række rhvor felt er forskellig fra NULL
24. oktober 2008 - 08:07
#3
Hej Arne, jeg tror desværre COUNT(*) stadig kun vil give 1. Og hvad mener du med COUNT(felt) ?
24. oktober 2008 - 14:37
#4
Hvis du har en tabel med: f1 f2 1 NULL 2 177 3 NULL 4 233 saa vil COUNT(*) give 4 mens COUNT(f2) vil give 2. Men jeg har nu laest spoergsmaalet igen. Du vil counte vandret fremfor lodret ikke ? Det kan du ikke goere med COUNT. I saa fald haenger du paa en banal: SELECT IF(f1 IS NULL,1,0)+IF(f2 IS NULL,1,0)+...+IF(f6 IS NULL,1,0) FROM tabel WHERE ...
24. oktober 2008 - 15:53
#5
Ahh, ja du har ret... Men min udfordring er som følger: f1 f2 f3 f4 f5 1 NULL NULL 2 NULL Altså 1 række, hvor jeg vil tælle felter som er NULL.
24. oktober 2008 - 16:11
#6
Saa er du noedt til at bruge den sidste SQL jeg outlinede
24. oktober 2008 - 16:34
#7
Og det er ikke en option. Jeg har 40 felter! :o) Så jeg tror jeg nøjes med min php løsning. Det virker. Hvis du vil have point for dig løsning, så smid et svar.
24. oktober 2008 - 16:48
#8
Og hvorfor er det et problem at bruge den metode paa 40 felter ? Du betaler vel ikke efter laengden af SQL ! Og et svar.
24. oktober 2008 - 17:01
#9
Det er ikke et problem, men der skal skrives for meget kode... Dovenskaben længe leve.
Computerworld tilbyder specialiserede kurser i database-management