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 %>
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
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
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
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.
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?
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
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
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!