webForumDet fria alternativet

Förenkla count

Databaser & SQLur Databashanterare & SQL

8 svar · 351 visningar · startad av Melea

Medlem sedan juli 20033 147 inlägg
Frågan#1

Hejsan!

Får inte riktigt ihop det med min count, såhär ser det ut nu

SELECT
(SELECT count(id)
FROM members WHERE status = 'Online') AS iCountOnline,
(SELECT count(id)
FROM members) AS iCount,
(SELECT count(id)
FROM members WHERE age >= 20) AS iCountAge20o,
(SELECT count(id)
FROM members WHERE age < 20 AND age > 0) AS iCountAge20u,
(SELECT count(id)
FROM members WHERE race = 'Protoss') AS iCountRaceP,
(SELECT count(id)
FROM members WHERE race = 'Zerg') AS iCountRaceZ,
(SELECT count(id)
FROM members WHERE race = 'Terran') AS iCountRaceT,
(SELECT count(id)
FROM members WHERE race = 'Random') AS iCountRaceR,
(SELECT count(id)
FROM members WHERE bild = 1) AS iCountPic,
(SELECT count(id)
FROM members WHERE gender = 'Male') AS iCountSexM,
(SELECT count(id)
FROM members WHERE gender = 'Female') AS iCountSexF,
(SELECT count(id)
FROM members WHERE gender = 'Male') AS iCountSexM
FROM members

Vad är det jag har missat?

Tack på förhand!

Medlem sedan maj 2005353 inlägg
#2

Varför har du med detta två gånger?

(SELECT count(id)
FROM members WHERE gender = 'Male') AS iCountSexM
Medlem sedan juli 20033 147 inlägg
#3

Helmertz skrev:

Varför har du med detta två gånger?

(SELECT count(id)
FROM members WHERE gender = 'Male') AS iCountSexM

Oj, bara en miss, copy/paste. :)
Ändrat i källkoden, funkar dock fortfarande inte.

Medlem sedan maj 2005353 inlägg
#4

Melea skrev:

Helmertz skrev:

Varför har du med detta två gånger?

(SELECT count(id)
FROM members WHERE gender = 'Male') AS iCountSexM

Oj, bara en miss, copy/paste. :)
Ändrat i källkoden, funkar dock fortfarande inte.

Tänkte det med, men lika bra att anmärka :)
frågan är för komplicerad för mig men lycka till och hälsa gärna Mazor från Polka :e

Medlem sedan dec. 20043 inlägg
#5

Det ser rätt ut. Den sista "from members" behövs inte, det är det enda jag ser som är "fel".

Vad får du för felmeddelande?

Stream

Medlem sedan dec. 200012 464 inlägg
#6

Den sista "from members" behövs inte

Tja, det beror på DBMS. Enligt standard så kan man inte utelämna from men en del DBMS tillåter men andra ger fel i så fall.

SELECT sum(case when status = 'Online' then 1 else 0 end) as iCountOnline,
       count(*) AS iCount,
sum(case when age >= 20 ' then 1 else 0 end) as iCountAge20,
sum(case when age between 1 and 19 then 1 else 0 end) iCountAge20o,
...

FROM members

torde vara något effektivare.

Att lagra age är inte så bra, bättre med startdatum.

Medlem sedan juli 20033 147 inlägg
#7

Tack så väldans mycket LarsG! Rätt som vanligt! :h :)

Helmertz skrev:

frågan är för komplicerad för mig men lycka till och hälsa gärna Mazor från Polka :e

Ska bli! :)

Medlem sedan maj 2005353 inlägg
#8

Melea skrev:

Ska bli! :)

Tack, Mellow - var det va? ;)

Medlem sedan juli 20033 147 inlägg
#9

Jajamen! :h

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