Räkna ifrån flera tabeller?

ASP

10 svar · 217 visningar · startad av Sammy

Medlem sedan maj 2000202 inlägg
Trådstart#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)

Medlem sedan dec. 200012 464 inlägg
#2

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

Medlem sedan maj 2000202 inlägg
#3

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

Medlem sedan dec. 200012 464 inlägg
#4

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)
Medlem sedan maj 2000202 inlägg
#5

Nej.. det gick inte del heller?

Medlem sedan dec. 200012 464 inlägg
#6

Och vad får du för fel då?

Medlem sedan maj 2000202 inlägg
#7

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

Medlem sedan maj 2000202 inlägg
#8

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.

Medlem sedan dec. 200012 464 inlägg
#9

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"
Medlem sedan maj 2000202 inlägg
#10

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?

Medlem sedan dec. 200012 464 inlägg
#11

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.

276 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
127 ms — deklarationer (db)
0 ms — hämta statistik (cache)
145 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)