11. marts 2005 - 22:33
Der er
5 kommentarer og
1 løsning
Udskrive antal records fra flere kolonner i DB
Jeg har nedenstående kode der skriver antal ud for Snack, men hvordan får jeg antallet ud fra de andre?
Kan det laves med den samme connection, eller skal der laves en for hvert antal man vil have?
pft. /Brian
*************************************************
<%
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath ("../db/opskrifter.mdb")
Conn.Open DSN
strSQL = "Select * from opskrifter"
set rscount = conn.execute("select count(id) as antal from opskrifter Where kategori='Snack'")
antal = rscount("antal")
set rscount = nothing %>
<table border="0" cellpadding="0" cellspacing="0" width="770" height="50">
<tr>
<td width="770" height="50">
<p style="margin-left: 200">
<a href="default2.asp?m=m-snack">Snack (<%=antal%>)</a> -
<a href="default2.asp?m=m-forret">Forret</a> -
<a href="default2.asp?m=m-hovedret">Hovedret</a> -
<a href="default2.asp?m=m-tilbehoer">Tilbehør</a> -
<a href="default2.asp?m=m-suppe">Suppe</a> -
<a href="default2.asp?m=m-dessert">Dessert</a> -
<a href="default2.asp?m=m-bagvaerk">Bagværk</a> -
<a href="default2.asp?m=m-grill">Grill</a></p></td>
</tr>
</table>
11. marts 2005 - 22:44
#1
Prøv med denne, jeg har ikke testet det, så jeg er ikke sikker på at det virker
<%
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath ("../db/opskrifter.mdb")
Conn.Open DSN
strSQL = "Select * from opskrifter"
set rscount = conn.execute("select count(id) as antal from opskrifter")
antal = rscount("antal")
set rscount = nothing %>
<table border="0" cellpadding="0" cellspacing="0" width="770" height="50">
<tr>
<td width="770" height="50">
<p style="margin-left: 200">
<a href="default2.asp?m=m-snack">Snack (<%=antal%>)</a> -
<a href="default2.asp?m=m-forret">Forret (<%=antal%>)</a> -
<a href="default2.asp?m=m-hovedret">Hovedret (<%=antal%>)</a> -
<a href="default2.asp?m=m-tilbehoer">Tilbehør (<%=antal%>)</a> -
<a href="default2.asp?m=m-suppe">Suppe (<%=antal%>)</a> -
<a href="default2.asp?m=m-dessert">Dessert (<%=antal%>)</a> -
<a href="default2.asp?m=m-bagvaerk">Bagværk (<%=antal%>)</a> -
<a href="default2.asp?m=m-grill">Grill (<%=antal%>)</a></p></td>
</tr>
</table>
11. marts 2005 - 23:21
#5
Med Access som back-end database burde du kunne bruge en SQL som denne:
strSQL = "SELECT COUNT(*) AS Snack,
(SELECT COUNT(*) FROM opskrifter WHERE kategori = 'Forret') AS Forret,
(SELECT COUNT(*) From opskrifter WHERE kategori = 'Hovedret') AS Hovedret,
(SELECT COUNT(*) FROM opskrifter WHERE kategori = 'Tilbehør') AS Tilbehør,
(SELECT COUNT(*) FROM opskrifter WHERE kategori = 'Suppe') AS Suppe,
(SELECT COUNT(*) FROM opskrifter WHERE kategori = 'Dessert') AS Dessert,
(SELECT COUNT(*) FROM opskrifter WHERE kategori = 'Bagværk') AS Bagværk,
(SELECT COUNT(*) FROM opskrifter WHERE kategori = 'Grill') AS Grill
FROM opskrifter WHERE kategori = 'Snack'
Her er det altså 8 separate forespørgsler som sættes sammen til én (Hvert felt/opsummering sin egen forespørgsel).
Man kan også gå den modsatte vej, hvilket måske er mere logisk:
SELECT SUM(IIF(kategori = 'Snack', 1, 0)) AS Snack,
SUM(IIF(kategori = 'Forret', 1, 0)) AS Forret,
SUM(IIF(kategori = 'Hovedret', 1, 0)) AS Hovedret,
SUM(IIF(kategori = 'Tilbehør', 1, 0)) AS Tilbehør,
SUM(IIF(kategori = 'Suppe', 1, 0)) AS Suppe,
SUM(IIF(kategori = 'Dessert', 1, 0)) AS Dessert,
SUM(IIF(kategori = 'Bagværk', 1, 0)) AS Bagværk,
SUM(IIF(kategori = 'Grill', 1, 0)) AS Grill
FROM opskrifter
I dette tilfælde gennemløbes alle felter og der laves en opsummering af enten en værdi på 1 (hvis kategorien er rigtig) eller 0 (hvis den er forkert). Resultatet er det samme som i den første forespørgsel, så man er sådan set frit stillet.