webForumDet fria alternativet
Logga in / Bli medlem

Summera 2 COUNT

Databaser & SQL

6 svar · 259 visningar · startad av Pikkenix

Medlem sedan mars 2003116 inlägg
Trådstart#1

Jag vill summera följande 2 COUNT, det fungerar tyvärr inte med att bara lägga till ett "+".
Körs på Access-databas.

...
COUNT(*) As svar, (SELECT COUNT(*) FROM tabell2 WHERE column = column2 AND column3 > '" & CStr(manaddatum) & "' AND column3 NOT IN (SELECT MEMBER_ID FROM tabell3 WHERE column4 <> 1)) AS fragor
...

Medlem sedan dec. 200012 464 inlägg
#2

Det borde gå

 COUNT(*) +  (SELECT COUNT(*) FROM tabell2 WHERE column = column2 AND column3 > '" & CStr(manaddatum) & "' AND column3 NOT IN (SELECT MEMBER_ID FROM tabell3 WHERE column4 <> 1)) AS fragorOchSvar

Annars så får du visa hela frågan och även beskriva det fel som du får.

Medlem sedan mars 2003116 inlägg
#3

Hela frågan:

strSql = "SELECT DISTINCT(R_AUTHOR) AS T_AUTHOR, COUNT(*) as svar, (SELECT COUNT(*) FROM FORUM_TOPICS WHERE T_AUTHOR = R_AUTHOR AND T_DATE > '" & CStr(manaddatum) & "' AND T_AUTHOR NOT IN (SELECT MEMBER_ID FROM FORUM_MEMBERS WHERE M_LEVEL <> 1)) AS tradar, COUNT(*) + (SELECT COUNT(*) FROM FORUM_TOPICS WHERE T_AUTHOR = R_AUTHOR AND T_DATE > '" & CStr(manaddatum) & "' AND T_AUTHOR NOT IN (SELECT MEMBER_ID FROM FORUM_MEMBERS WHERE M_LEVEL <> 1)) AS totalt FROM FORUM_REPLY WHERE R_DATE > '" & CStr(manaddatum) & "' AND R_AUTHOR NOT IN (SELECT MEMBER_ID FROM FORUM_MEMBERS WHERE M_LEVEL <> 1) GROUP BY R_AUTHOR ORDER BY COUNT(*) DESC"

Fungerar nu med "totalt" MEN jag vill sortera efter samma sak som "totalt" men det fungerar icke tycärr...

Medlem sedan dec. 200012 464 inlägg
#4
 strSql = "SELECT R_AUTHOR AS T_AUTHOR, COUNT(*) as svar, (SELECT COUNT(*) FROM FORUM_TOPICS WHERE T_AUTHOR = R_AUTHOR AND T_DATE > '" & CStr(manaddatum) & "' AND T_AUTHOR NOT IN (SELECT MEMBER_ID FROM FORUM_MEMBERS WHERE M_LEVEL <> 1)) AS tradar, COUNT(*) + (SELECT COUNT(*) FROM FORUM_TOPICS WHERE T_AUTHOR = R_AUTHOR AND T_DATE > '" & CStr(manaddatum) & "' AND T_AUTHOR NOT IN (SELECT MEMBER_ID FROM FORUM_MEMBERS WHERE M_LEVEL <> 1)) AS totalt FROM FORUM_REPLY WHERE R_DATE > '" & CStr(manaddatum) & "' AND R_AUTHOR NOT IN (SELECT MEMBER_ID FROM FORUM_MEMBERS WHERE M_LEVEL <> 1) GROUP BY R_AUTHOR ORDER BY TOTALT DESC"

Ovanstående går bra om det inte är access då får ange ordningsnumret i select-listan för uttrycket istället för korrelationsnamnet.

Distinct är inte en funktion och det behövs inte alls eftersom du har group by.

Medlem sedan mars 2003116 inlägg
#5

Är ju tyvärr access och jag vet att man inte kan sortera efter alias - och min ovanstående kod fungerar inte, så hur ska jag göra?

Medlem sedan dec. 200012 464 inlägg
#6
order by 4 desc

ange ordningsnumret i select-listan för uttrycket istället för korrelationsnamnet.

Medlem sedan mars 2003116 inlägg
#7

Ahha, nu fattar jag, sorry

262 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)
116 ms — ändringar (db)