S Sammy Medlem sedan maj 2000 202 inlägg Frågan 22 jan. 2002 17:31 #1 Hur räknar man poster ur flera tabeller?
Nu använder jag detta för att räkna ifrån en tabell:
\<%
Set Connect = Server.CreateObject("ADODB.Connection")
MdbFilePath = Server.MapPath("../../db/databas.mdb")
Connect.Open "Driver={Microsoft Access Driver (\*.mdb)}; DBQ=" & MdbFilePath & ";"
SQL = "Select Count(IDNR) AS iCount from TABELL1"
Set RS = connect.execute(SQL)
Response.write RS("iCount")
%\>
\<%
Connect.close
Set Connect = nothing
%\>
Min önskan är att kunna räkna poster ifrån 3 tabeller. (tabell1, tabell2 och tabell3)
------------------
/Sammy Swärd
L LarsG Medlem sedan dec. 2000 12 464 inlägg Varför? Borde du inte slå ihop tabellerna i så fall?
select (select count(*) from tabell1) + (select count(*) from tabell2) + (select count(*) from tabell3)
Nu vet jag inte om Access tillåter att du utelämnar from. Det går ju att lösa med en distinct och vilket tabellnamn som helst där det finns (få) poster
------------------
essentitia preter non sans multiplicandum
S Sammy Medlem sedan maj 2000 202 inlägg <%
Set Connect = Server.CreateObject("ADODB.Connection")
MdbFilePath = Server.MapPath("../../db/databas.mdb")
Connect.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & MdbFilePath & ";"
SQL = "select (select count(\*) from tabell1) + (select count(\*) from tabell2) + (select count(\*) from tabell3)"
Set RS = connect.execute(SQL)
Response.write RS("count")
%\>
\<%
Connect.close
Set Connect = nothing
%\>
Var det så du hade tänkt dig då eller? Det fungerade inte tyvärr...
------------------
/Sammy Swärd
Dator 1: Epox 8KHA+ | AMD T-Bird 1200/266 | ALPHA 8045T/TITAN 80x25 2500rpm | 350W Noise Control med PAPST 2050rpm | 256 DDR 266 Crucial | Gainward AGP GeForce2 Ti/500XP 64MB 4,0n | Plextor CD-RW 24/10/40 IDE | Samsung SyncMaster 19" 900SL+ (1600x1200 87Hz) | Logitech Cordless Mouseman Wheel | Windows XP Pro
Dator 2: AOpen AX59 Pro | AMD K6-II 450Mhz | 192Mb SDRAM | NVidia TNT2 32Mb | Sony CRX 145-S SCSI CD-RW | Soundblaster PCI 128 | Compaq 17" (1280x1024/85Hz) | Windows 98SE
[Redigerat av Sammy den 22 jan 2002]
L LarsG Medlem sedan dec. 2000 12 464 inlägg Och vad får du för fel då?
Response.write RS("count")
fungerar inte då kolumnen inte har något namn i selectsatsen.
Du får använda
Response.write RS(0)
------------------
essentitia preter non sans multiplicandum
S Sammy Medlem sedan maj 2000 202 inlägg Nej.. det gick inte del heller?
------------------
/Sammy Swärd
L LarsG Medlem sedan dec. 2000 12 464 inlägg Och vad får du för fel då?
------------------
essentitia preter non sans multiplicandum
S Sammy Medlem sedan maj 2000 202 inlägg <%
Set Connect = Server.CreateObject("ADODB.Connection")
MdbFilePath = Server.MapPath("../../db/databas.mdb")
Connect.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & MdbFilePath & ";"
SQL = "select (select count(*) from tabell1) + (select count(*) from tabell2) + (select count(*) from tabell3)"
Set RS = connect.execute(SQL)
Response.write RS(0)
%>
<%
Connect.close
Set Connect = nothing
%>
Fick som svar att det var ett odefinerat fel?
------------------
/Sammy Swärd
S Sammy Medlem sedan maj 2000 202 inlägg Feltyp:
Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
[Microsoft][Drivrutin för ODBC Microsoft Access] Reserverat fel (|). Det finns inget meddelande för felet.
------------------
/Sammy Swärd
L LarsG Medlem sedan dec. 2000 12 464 inlägg Imposant. Får du felet vid execute?
Om du testar så här då?
SQL = "select count(*) from
(select 1 from tabell1 union all select 1 from tabell2 union all select 1 from tabell3) as s"
------------------
essentitia preter non sans multiplicandum
S Sammy Medlem sedan maj 2000 202 inlägg Nej, det fungerade inte heller...
Vet inte vart jag får felet men jag antar att det är vid execute?
Får nog ge upp med att försöka räkna alla poster ur tre olika tabeller? eller?
------------------
/Sammy Swärd
L LarsG Medlem sedan dec. 2000 12 464 inlägg Det går väl på något sätt
Det finns en sån här lite tråkig variant.
sql = "select count(*) from tabell1 union all select count(*) from tabell2 union all select count(*) from tabell3"
set rs = connect.execute(sql)
count = 0
while not rs.eof
count = rs(0) + count
rs.movenext
wend
i värsta fall får du väl köra det som tre separata frågor.
------------------
essentitia preter non sans multiplicandum