Avatar billede __ Nybegynder
23. marts 2002 - 23:47 Der er 11 kommentarer

Optæl ved hjælp af SQL

Jeg har brug for at tælle hvor mange poster der begynder med f.eks "P" i min database.

Jeg finder ud af hvad for et bogstav der skal tælles op ved hjælp af denne sætning "startletter"
Og så vis startletter = p eller O skal den tælle op hvor mange der begynder emd det italt!

Hvordan skal SQL-sætningen se ud?
Avatar billede invisibleman Nybegynder
23. marts 2002 - 23:51 #1
"SELECT COUNT(*) FROM tabel WHERE felt LIKE '" & startletter & "%'"
Avatar billede rou Nybegynder
24. marts 2002 - 00:06 #2
Igen, LIKE er meget ressourcekrævende, så hvis du kan skal du undgå det.

Prøv "SELECT COUNT(*) FROM tabel WHERE LEFT(felt,1) = '"& startLetter &"'
Avatar billede invisibleman Nybegynder
24. marts 2002 - 00:07 #3
Igen ? Jeg bruger selv LEFT() men får altid af vide at LIKE er "meeeeget bedre .. " osv..
Avatar billede erikjacobsen Ekspert
24. marts 2002 - 01:29 #4
LIKE er tung med % som første tegn. Men som anført her kan den
jo godt bruge et index (jeg skal dog ikke sige om Access, som
brugeren muligvis anvender, er i stand til det)
Avatar billede __ Nybegynder
24. marts 2002 - 11:40 #5
>>Rou Jeg vil gerne have en forklaring af brugen med LEFT, hvad står (felt,1) f.eks for. kan du forklare mig noget om den, samt hvad den kan bruges til?
Avatar billede __ Nybegynder
24. marts 2002 - 11:50 #6
Forresten når jeg ahr sætningen:
"SELECT COUNT(*) FROM tabel WHERE LEFT(felt,1) = '"& startLetter &"'
Hvordan ligger jeg så værdien over i et elelr andet, så jeg kan requeste det senere på siden?
Avatar billede invisibleman Nybegynder
24. marts 2002 - 11:56 #7
__: Left() er en funktion der også findes i ASP, og den gør det at den tager x antal tegn fra en streng og returnerer dem.

s = "Eksperten.dk"
Response.Write Left(s, 3)

Vil give "Eks". Det samme gælder for SQL.
Avatar billede __ Nybegynder
24. marts 2002 - 12:10 #8
Hmm mit script ser så sådan her ud:

<%
startletter = Request.QueryString("startletter")

'Vis der ikk er valgt noget bogstav, start med at vise bogstavet A
if startletter = "" then
  startletter = "A"
end if
%>

<!--#include file="DNSCon.asp"-->

<%
'Vis tal sorteringen (123) er valgt, tilknyt alle rekorder som ikke starter med et bogstav
if startletter = "Char" then
  sql = "SELECT navn FROM koder WHERE ISNUMERIC(LEFT(navn,1)) ORDER BY navn"
else
  'Ellers find posterne som starter med det valgte bogstav
  sql = "SELECT navn FROM koder WHERE LEFT(navn,1) = '" & startletter & "' ORDER BY navn"
end if

Set rsUsers = Server.CreateObject("ADODB.Recordset")
rsUsers.Open sql, conn

%>

<%
sql = "SELECT COUNT(*) FROM koder WHERE LEFT(felt,1) = '"& startLetter & "'"
%>



       

<%
'Viser koder som begynder med tal %>
<a href="userview.asp?startletter=Char">123</a>
<%'Loop through alphabet (chars 65 to 90 are A-Z)
for alphabet = 65 to 90%>

<a href="userview.asp?startletter=<%=chr(alphabet)%>"><%=chr(alphabet)%></a>
<%next%>
 
 
<%if not rsUsers.EOF then%>

<%
' Viser koder som begynder med A-Z %>
<br><br><font face="arial" size="2">Koder i kategorien <%=startletter%>
(Ialt :  <% Response.Write Left(felt,1) %><B></B>)</font><br>
<%rsUsers.Movefirst
do until rsUsers.EOF%>

<br>
<font face="arial" size="2"><%=rsUsers("navn")%></font>
<%rsUsers.Movenext
loop%>

<%'If no users, give a message
else%>

<br><br>Ingen koder i databasen som starter med <b><%=startletter%></b>
<%end if%>

Men jeg får ikke optalt hvor mange koder der er med bogstavet A, vis jeg går ind under a!!!, hvad skal der rettes?
Avatar billede erikjacobsen Ekspert
24. marts 2002 - 13:38 #9
skal du tælle antallet skal vi over i en GROUP BY
Avatar billede __ Nybegynder
24. marts 2002 - 16:37 #10
Ja vis at startletter = a. Skal den optælle hvor mange der i kolonnen "navn" som starter med a. Og i samme tilfælde vis startletter = b. Så skal den gøre det samme!
Avatar billede erikjacobsen Ekspert
24. marts 2002 - 20:52 #11
Skal den kun tælle antallet for ét bogstav? Og ikke for alle?

select count(*) from dintabel where felt like 'a%'

og så kan du sætte noget ind på a's plads
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester