webForumDet fria alternativet

Många COUNT

ASP

12 svar · 199 visningar · startad av evesve

Medlem sedan sep. 2001163 inlägg
Frågan#1

Hej! Nytt problem!
Jag vill ha ut en tabell som ska se ut ungefär så här:
============
AVD1 Summa:12st ' Summan av Grupp 1-3
Grupp1 Summa:3st
Grupp2 Summa:4st
Grupp3 Summa:5st
AVD2 Summa:10st ' Summan av Grupp 1-3
Grupp1 Summa:4st
Grupp2 Summa:2st
Grupp3 Summa:4st
osv.
============
Jag har kommit så här långt när det gäller COUNT och att visa tabellen.
Det här bör visa lista och räkna Avd1 resp. Avd1/Grupp1.
Hur får jag den att räkna varje grupp utan att lägga till mängder med COUNT?

<%Set RecSet = Server.CreateObject("ADODB.Recordset") 
 Visa = "SELECT * FROM Avdelningar order by Avd"
summa = "SELECT count(*) AS grupper FROM databas where Avd = 'Avd1'"
summa2 = "SELECT count(*) AS Grupper2 FROM databas where Avd = 'Avd1' AND Grupp= 'Grupp1'"

RecSet.Open summa, Connect, adOpenStatic, adLockOptimistic  
summa=RecSet("Grupper")
RecSet.Close

RecSet.Open summa2, Connect, adOpenStatic, adLockOptimistic  
summa2=RecSet("Grupper2")
RecSet.Close

RecSet.Open Visa, Connect, adOpenStatic, adLockOptimistic

Response.write "<TR><TD colspan=5> <B>"&RecSet("Avd")&"</B>, "&antalsold&"</TD></TR>"

 Do While Not RecSet.EOF %> 
<!--MELLANRUM MELLAN GRUPPERNA-->
 <%Grupp = ""
 If Grupp <> RecSet("Avd") then
 if Grupp <> "" thenResponse.write "<TR><TD colspan=5> <B>"&RecSet("Avd")&"</B>, "&summa&"</TD></TR>" 
 Grupp = RecSet("Avd")
 end if %>
<!--MELLANRUM MELLAN GRUPPERNA slut-->

<TR>
<td><% =RecSet("Avd") %></td>
<td><% =RecSet(Grupp") %></td>
<td><% =summa2 %> st</td>
</TR>
<% RecSet.MoveNext 
Loop
RecSet.Close %>
Medlem sedan dec. 200012 464 inlägg
#2

Kan du testa med denna fråga

select count(*) as Total, avd, '' as grupp,1 as typ
  from databas
 group by avd
union
select count(*) ,avd,grupp,2
  from databas
 group by avd,grupp
order by avd,typ,grupp

------------------
essentitia preter non sans multiplicandum

Medlem sedan sep. 2001163 inlägg
#3

Det verkar bra, men jag får inte ut det rätt.
Jag har försökt alla alternativ i stället för mina nedanstående frågetecken och får samma värde antingen en eller trettio gånger.

RecSet.Open summa, Connect, adOpenStatic, adLockOptimistic 
summa=????????????????????????????
Do While Not RecSet.EOF
Response.write summa
RecSet.MoveNext 
Loop
RecSet.Close

...något förenklat.

Medlem sedan dec. 200012 464 inlägg
#4
query = "select count(*) as Total, avd, '' as grupp,1 as typ
from databas group by avd
union select count(*) ,avd,grupp,2
from databas group by avd,grupp order by avd,typ,grupp"

set rs = connect.execute(query)

while not rs.eof
if cint(rs("typ") = 1 then
   response.write rs("avd") 
else
response.write rs("grupp")
end if
response.write " Summa: " & rs("total") & "st <br>"
rs.movenext
wend
rs.close
set rs=nothing

------------------
essentitia preter non sans multiplicandum

Medlem sedan sep. 2001163 inlägg
#5

Suveränt! Det bara rasslade siffror.
Till och med rätt siffror!
Dom kopplingar jag har är 01, 02, 03 o.s.v som ligger under "Avd".
Motsvarande för grupperna.
Vilket ger:
01 Summa:12 st
01 Summa: 3 st
02 Summa: 4 st
03 Summa: 5 st
02 Summa:10 st
O.S.V.

Kan jag i samma selectsats få ut ex.
"Avd 1" som i kolumnen "Anamn" alltid är samma som "01" i kolumnen "Avd".
Detta skulle ge:
01 Avd1 Summa:12 st
01 Grp1 Summa: 3 st
02 Grp2 Summa: 4 st
03 Grp2 Summa: 5 st
02 Avd1 Summa:10 st
O.S.V.
Jag har för sökt hämta namnen från en annan tabell där jag listat avdelningar och grupper, men som vanligt:
Ingen framgång.

Medlem sedan dec. 200012 464 inlägg
#6

Det beror på hur dom tabller där du har namn på grupper och avdelnngar ser ut.

Vilka kolumnre ingår och hur hänger det ihop med tabellen databas?

------------------
essentitia preter non sans multiplicandum

Medlem sedan sep. 2001163 inlägg
#7

Det är det som är problemet att dom inte är kopplade till varandra.

Jag har en tabell (Enheter) med kolumnerna:
Avd, Anamn, Grupp, Gnamn
som listas:
01, Avd1, 01, Grp1
01, Avd1, 02, Grp2
OSV.
Den tabellen använder jag för menystruktur och inmatning av nya enheter.
Ska den användas så måste antingen selectsatsen ge ett noll-värde på rader som inte finns representerade i "databas" eller så måste raderna från "enheter" utelämnas om dom inte finns i "databas" (bästa alternativet).
Kan man inte hitta någon "select distinct"-variant på tabellen "databas" och koppla ihop det COUNT?

Medlem sedan dec. 200012 464 inlägg
#8

Jo ,det är lite olyckligt med den databasdesignen. Om du testar den här frågan då?

query = "select total,anamn,grupp,type from (
select count(*) as Total, avd, '' as grupp,1 as typ
from databas group by avd ) as s inner join enheter on s.avd = enheter.avd
union select count(*) ,anamn,grpnamn,2
from databas inner join enheter on (databas.avd = enheter.avd and databas.grupp = enheter.grupp)
group by avd,grupp order by avd,typ,grupp"

I och med att man har en union så kommer den att ta bort alla duplikat.

red: saknades en parentes.
------------------
essentitia preter non sans multiplicandum

[Redigerat av LarsG den 13 feb 2002]

Medlem sedan sep. 2001163 inlägg
#9

Felmeddelande:
Det angivna fältet 'Avd' kan referera till fler än en av de tabeller som är uppräknade i SQL-uttryckets FROM-instruktion

Medlem sedan dec. 200012 464 inlägg
#10
query = "select total,anamn,grpnamn,type from (
select count(*) as Total, avd, '' as grpnamn,1 as typ
from databas group by avd ) as s inner join enheter on s.avd = enheter.avd
union select count(*) ,anamn,grpnamn,2
from databas inner join enheter on (databas.avd = enheter.avd and databas.grupp = enheter.grupp)
group by anamn,grpnamn order by anamn,typ,grpnamn"

Ny bytte jag så att du bara får upp anamn, grpnamn och typ. (Avd oh grupp är väl ointressant?)

------------------
essentitia preter non sans multiplicandum

Medlem sedan sep. 2001163 inlägg
#11

Jag har bytt ut så jag ser "Avd1" i stället för "01" med hjälp av din ursprungliga kod.
Det fungerar alldeles förträffligt så länge.
I och för sig är det bättre med sortering på "01"-fälten, men man kan väl inte få allt här i livet.
Ditt senaste kodförslag ska jag försöka få in när jag har begripit vad den innebär.
Jag tackar så länge! Återkommer säkert!

Medlem sedan nov. 20017 144 inlägg
#12

men man kan väl inte få allt här i livet.

Vem har sagt det? Vem sätter begränsningarna? ;)

MVH Jesper T

------------------
If ASPackad date-1 then ASPerin Now

Medlem sedan sep. 2001163 inlägg
#13

Nej Jesper,
men lite ödmjukhet skadar väl inte.
Mitt slutmål är ungefär: http://www.websamba.com/svenssons/test/avdelningar.html
.....men varför skynda så länge det fortfarande är vinter?

283 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
145 ms — deklarationer (db)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)
147 ms — ändringar (db)