webForumDet fria alternativet

Många count i en sträng

10 svar · 271 visningar · startad av Nickemannen

NickemannenMedlem sedan aug. 20003 575 inlägg
#1

Hej, Jag vill räkna ett par olika count i en och samma sql sträng.

Jag vill räkna alla där
t.ex.

priority = 1
och få ut hur många det är.
och jag vill räkna hur många
priority = 0

jag testade att lägga ihop 2 sql strängar men då blev det fel
för mysql. Denna var visst fel.

string strSql"Select Count(*) as OpenCount from tickets where priority = 0; Select Count(*) as ClosedCount from tickets where priority = 1;";
LarsGMedlem sedan dec. 200012 464 inlägg
#2
select priority,count(*) 
from tickets
where priority in (0,1)
group by priority

Då får du det som två rader

Om du vill ha det som en rad med två kolumner

select sum(case when priority = 0 then 1 else 0 end),
sum(case when priority = 1 then 1 else 0 end)
from tickets
where priority in (0,1)
NickemannenMedlem sedan aug. 20003 575 inlägg
#3

Hmm, jag får det inte att fungera.
Jag kanske förklarade fel.

Jag vill ha det för statistik.

t.ex.

Öppna tickets: (antal dom som har värdet 0 i databasen)
Stängda tickets: (antalet dom som har värdet 1 i databasen)

i priority.

LarsGMedlem sedan dec. 200012 464 inlägg
#4

Hmm, jag får det inte att fungera.

Vad menar du med det?

NickemannenMedlem sedan aug. 20003 575 inlägg
#5

Jag får inte ut rätt antal värde.

jag har 2 rader där ticket är close och en där det är öppet.
Allt jag får fram är 1 eller 0 ?

LarsGMedlem sedan dec. 200012 464 inlägg
#6

Är det något null-värde som ställer till det då?

NickemannenMedlem sedan aug. 20003 575 inlägg
#7

Jag vet inte.
Men när jag kör din första sql sträng så blir värdena
0,1 Men en rad kanske är 0 i mysql ? det borde stå 1,2

The_HulkMedlem sedan juni 20031 837 inlägg
#8

sum - summerar bara värdena i raderna. om du nu har värdet 0 för de som är öppna och summerar alla de så blir ju summan 0.
vill du räkna raderna måste använda count()

The_HulkMedlem sedan juni 20031 837 inlägg
#9

Förlåt mig, var jag som inte läste SQL-satsen ordentligt.
Den koden du skrev fungerade bra för mig, räknade rätt.

The_HulkMedlem sedan juni 20031 837 inlägg
#10

kolla att du har NOT NULL på fältet priority, om du inte har det så räknas 0 som NULL. och om du hade två rader med värdet på priority = 0 så stämmer de svaren du fått.

NickemannenMedlem sedan aug. 20003 575 inlägg
#11

Fick det att fungera.
Jag som gjorde lite fel.
Du är en gud LarsG...
Har du någon sida eller boktips som man kan läsa mer om detta.
jag förstår att din mångåriga erfarenhet är svår att lära in.

131 ms totalt · 3 externa anrop · v20260731065814-full.beb2e261
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)