Det du letar efter är GROUP BY, t.ex.
select votealternatives_id, count(*)
from votes
where polls_id = 1
group by votealternatives_id
3 svar · 212 visningar · startad av kristoffer
Jag har ett omröstningssystem till vilket jag i en databas har lagrat röstningarna enligt:
tabell: polls
fält: id
fält: question
tabell: votealternatives
fält: id
fält: polls_id
fält: alternativetext
tabell: votes
fält: id
fält: polls_id
fält: users_id
fält: votealternatives_id
För att visa resultatet behöver jag veta har många poster i tabellen votes som har röstat på votealternatives_id = 1, 2, 3, osv. Jag vill dock inte göra ett recordset för varje röstningsalternativ,
objRS1 = objConn.Execute("SELECT Count(*) AS Antal_1 FROM votes WHERE polls_id = 1 AND votealternatives_id = 1")
objRS2 = objConn.Execute("SELECT Count(*) AS Antal_2 FROM votes WHERE polls_id = 1 AND votealternatives_id = 2")
objRS3 = objConn.Execute("SELECT Count(*) AS Antal_3 FROM votes WHERE polls_id = 1 AND votealternatives_id = 3")
Kan jag få de olika antalen i samma recordset?
[Redigerat av kristoffer den 02 jan 2002]
Det du letar efter är GROUP BY, t.ex.
select votealternatives_id, count(*)
from votes
where polls_id = 1
group by votealternatives_id
Tackar. Det fungerade. Kan jag dessutom få reda på det totala antalet i samma SELECT-sats?
Beror på vilken dbms du har. En del har stöd för något som heter with rollup som innebär att man fär en slutsummering av värdena.
select votealternatives_id, count(*)
from votes
where polls_id = 1
group by votealternatives_id
with rollup
Värdet hamnar i ett eget recordset. Om det inte fungerar så är det nog enklast att summera värdena samtidigt som du presenterar resultatet.
------------------
essentitia preter non sans multiplicandum