Avatar billede webbygger Nybegynder
16. januar 2005 - 18:36 Der er 50 kommentarer og
1 løsning

SQL statements

Jeg roder rundt i det, så er der en der kan lave en SQL statements for mig - til udtræk af data fra 2 tabeller !

Den skal trække SELECT TOP 5 fra "kommen"

tabel kommen:
id
navn
dato

Og fra tabel anm :

kategori
produkt
Avatar billede riversen Nybegynder
16. januar 2005 - 18:37 #1
hvis ikke du har en relation mellem tabellerne kan du ikke gøre det i en enkelt sql sætning
Avatar billede softspot Forsker
16. januar 2005 - 18:45 #2
Hvad med:

SELECT kommen.*, anm.*
FROM kommen, anm
Avatar billede softspot Forsker
16. januar 2005 - 18:46 #3
Sorry, det skulle have været:

SELECT TOP 5 kommen.*, anm.*
FROM kommen, anm
Avatar billede webbygger Nybegynder
16. januar 2005 - 18:46 #4
riversen prøv lige, at se på dette link http://www.web-byggeren.dk/eksperten/anmeldelse.asp

Jeg ved ikke om du kan følge, hvad jeg mener !!!!
Avatar billede riversen Nybegynder
16. januar 2005 - 18:47 #5
softspot: hvad er top i anm ?
Avatar billede riversen Nybegynder
16. januar 2005 - 18:48 #6
glem lige min sidste kommentar
Avatar billede riversen Nybegynder
16. januar 2005 - 18:51 #7
webbygger: desværre, det kan jeg ikke. Du har fx ikke forklare hvad anm er og hvorfor du nævner tabellen, nu hvor du kun vil have top5 fra kommen. Jeg går ud fra der er en eller anden sammenhæng, som du ikke har forklaret.
Avatar billede softspot Forsker
16. januar 2005 - 18:55 #8
Webbygger > Det ligner nu mest et behov for at udføre to separate queries.

riversen > Ja, jeg tror du har ret i din mistro til mit SQL-statement, jeg synes heller ikke den holder helt, når først jeg får lavet en testquery i min Access-database ;)
Avatar billede webbygger Nybegynder
16. januar 2005 - 19:23 #9
Okay jeg skal prøve, at forklare det noget bedre...

Som i ser vil jeg lave en boks, så folk kan se de sidste 5 kommentar (de sidste 5 anmeldelser kører som den skal).

tabel kommen:
id
navn
kategori (request.querystring("rid"))
dato

tabel anm:
kategori ( f.eks. bøger )
produkt
m.fl som ikke skal bruges

Så den "eneste relation mellem de to tabeller er kategori, som I ser er den ene  request.querystring("rid") og den anden er f.eks. bøger

Det jeg ønsker at trække fra tabeller er :

Kategori fra anm
Produkt fra anm
Navn fra kommen
Dato fra kommen


Var det bedre ????
Avatar billede softspot Forsker
16. januar 2005 - 19:31 #10
Noget i stil med:

"SELECT anm.kategori, anm.produkt, kommen.navn, kommen.dato
FROM kommen INNER JOIN anm ON kommen.kategori = anm.kategori
WHERE kommen.kategori = '" & requst.querystring("rid") & "'"
Avatar billede softspot Forsker
16. januar 2005 - 19:31 #11
...og så skal det naturligvis være "SELECT TOP 5..."
Avatar billede webbygger Nybegynder
16. januar 2005 - 19:38 #12
for denne fejl

Microsoft VBScript runtime error '800a01a8'

Object required: ''

/eksperten/top5test.asp, line 13

og det er i SQL sætningen
Avatar billede softspot Forsker
16. januar 2005 - 20:12 #13
jeg har vist tastet forkert... det hedder request og ikke requst...
Avatar billede webbygger Nybegynder
16. januar 2005 - 21:04 #14
for så denne fejl:

Microsoft OLE DB Provider for ODBC Drivers error '80040e0c'

Command text was not set for the command object.

/eksperten/top5test.asp, line 14


line 14 = Set rs = Conn.Execute (str_sql2)
Avatar billede softspot Forsker
16. januar 2005 - 21:38 #15
kan du ikke lige paste den kode du udfører ind, gerne med lidt flere linier før og efter?
Avatar billede webbygger Nybegynder
16. januar 2005 - 21:41 #16
Jamen softspot du får hele koden her :

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>

<%
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & server.MapPath("jerg.mdb")
sql2 = "SELECT TOP 5 anm.kategori, anm.produkt, kommen.navn, kommen.dato FROM kommen INNER JOIN anm ON kommen.kategori = anm.kategori WHERE kommen.kategori = '" & request.querystring("rid") & "'"
Set rs = Conn.Execute (str_sql2)
%>



              </font>
              <p> <font face="Courier New, Courier, mono" size="3">
                <%
if rs.EOF then
%>
                <span class="overskrift"><font color="#FF0000"><b>Ingen anmeldelser
                endnu! </b></font> </span>
                <%
else
%>
                </font></p>
              <div align="center">
                <table height="8" cellspacing="1" align="center" cellpadding="2" border="0" bgcolor="#000000" width="700">
                  <tr bgcolor="#CCCCCC">
                    <td width="82%">
                      <div align="center"><font face="Courier New, Courier, mono" size="3" color="#333333"><b>5
          Seneste kommentarer</b></font></div>
                    </td>
                  </tr>
                  <%
Do Until rs.EOF
%>
                  <tr bgcolor="#E5E5E5">
                   
      <td width="82%"><font face="Courier New, Courier, mono" size="3"> <a href="/eksperten/popop.asp?rid=<%= rs("id") %>">
      <% = rs("kategori") %>
      <% = rs("produkt") %>
      <% = rs("dato") %>
        skrevet af
        <% = rs("navn") %>
        </a> <font color="#FF0000" size="2"></font></font></td>
                  </tr>
                  <%
rs.MoveNext
Loop
%>
                  <p></p>
                </table>
              </div>
              <font face="Courier New, Courier, mono" size="2">
              <% end if
       
          rs.Close
  Conn.Close
  Set rs = Nothing
  Set Conn = Nothing
  %>
Avatar billede softspot Forsker
16. januar 2005 - 21:49 #17
Hvor er str_sql2 erklæret og sat?

Må jeg anbefale at du benytter Option Explicit hvilket vil tvinge dig til at erklære dine variable inden du kan bruge dem - det eliminerer fejl som denne, da du ikke vil kunne køre koden inden alle variable er erklæret.
Avatar billede webbygger Nybegynder
16. januar 2005 - 21:55 #18
Hmmm Softspot det ved jeg ikke......
jeg har ikke selv lavet det stykke kode,
men hvis du vil - laver du den "bare" om !!!
Avatar billede softspot Forsker
16. januar 2005 - 21:57 #19
Prøv at ændre flg. sætning:

Set rs = Conn.Execute (str_sql2)

til:

Set rs = Conn.Execute (sql2)
Avatar billede webbygger Nybegynder
16. januar 2005 - 22:00 #20
Microsoft OLE DB Provider for ODBC Drivers error '80004005'

[Microsoft][ODBC Microsoft Access Driver] Type mismatch in expression.

/eksperten/top5test.asp, line 14
Avatar billede softspot Forsker
16. januar 2005 - 22:04 #21
Er parameteren "rid" specificeret i url når du kalder denne side (dvs. top5test.asp?rid=bøger)?

Hvilken type er kategori i databasen?

Har kategori den samme type (text) i begge tabeller (kommen og anm)?
Avatar billede webbygger Nybegynder
16. januar 2005 - 22:10 #22
Parameteret ser eks. sådan ud http://www.web-byggeren.dk/eksperten/poptop.asp?rid=13

kategori er forskellig i hver sig tabel !!!
kommen = tal
anm = tekst
Avatar billede softspot Forsker
16. januar 2005 - 22:15 #23
Jamen, du sagde tidligere at det var relationen mellem de to tabeller!? Det kan det ikke være hvis de er af forskellig type...

Jeg har svært ved at se hvordan disse to tabeller har noget med hinanden at gøre ud over at du vil have de 5 første fra hver tabel vist på din side. Kan du forklare lidt mere om hvad det er du vil have løst?
Avatar billede webbygger Nybegynder
16. januar 2005 - 22:24 #24
Det er vist mig der er rundforvirret....

kategori (request.querystring("rid")) er ligemed ID i anm
er det ikke en relation ?
Avatar billede webbygger Nybegynder
16. januar 2005 - 22:31 #25
Her ser du min ide, hvis det hjælper noget http://www.web-byggeren.dk/eksperten/top5test2.asp
Avatar billede softspot Forsker
16. januar 2005 - 22:34 #26
Jo, det lyder mere korrekt :)

Så skal du ændre dit SQL til dette:

sql2 = "SELECT TOP 5 kommen.*, anm.* FROM kommen INNER JOIN anm ON kommen.kategori = anm.id WHERE kommen.kategori = '" & request.querystring("rid") & "'"

NB: Jeg har tilføjet id fra kommen-tabellen, da jeg kan se at du skal bruge dette id senere (når du danner link til poptop.asp).
Avatar billede webbygger Nybegynder
16. januar 2005 - 22:41 #27
Microsoft OLE DB Provider for ODBC Drivers error '80004005'

[Microsoft][ODBC Microsoft Access Driver] Type mismatch in expression.

/eksperten/top5test.asp, line 14
Avatar billede softspot Forsker
16. januar 2005 - 22:43 #28
DET VAR LIGE GODT GROV!?? :)

Kan jeg få dig til at paste din kode ind igen?
Avatar billede webbygger Nybegynder
16. januar 2005 - 22:50 #29
Ja det syntes jeg også!!!!!!


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>

<%
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & server.MapPath("jerg.mdb")
sql2 = "SELECT TOP 5 anm.kategori, anm.produkt, kommen.navn, kommen.dato FROM kommen INNER JOIN anm ON kommen.kategori = anm.kategori WHERE kommen.kategori = '" & request.querystring("rid") & "'"
Set rs = Conn.Execute (sql2)
%>



              </font>
              <p> <font face="Courier New, Courier, mono" size="3">
                <%
if rs.EOF then
%>
                <span class="overskrift"><font color="#FF0000"><b>Ingen anmeldelser
                endnu! </b></font> </span>
                <%
else
%>
                </font></p>
              <div align="center">
                <table height="8" cellspacing="1" align="center" cellpadding="2" border="0" bgcolor="#000000" width="700">
                  <tr bgcolor="#CCCCCC">
                    <td width="82%">
                      <div align="center"><font face="Courier New, Courier, mono" size="3" color="#333333"><b>5
          Seneste kommentarer</b></font></div>
                    </td>
                  </tr>
                  <%
Do Until rs.EOF
%>
                  <tr bgcolor="#E5E5E5">
                   
      <td width="82%"><font face="Courier New, Courier, mono" size="3"> <a href="/eksperten/popop.asp?rid=<%= rs("id") %>">
      <% = rs("kategori") %>
      <% = rs("produkt") %>
      <% = rs("dato") %>
        skrevet af
        <% = rs("navn") %>
        </a> <font color="#FF0000" size="2"></font></font></td>
                  </tr>
                  <%
rs.MoveNext
Loop
%>
                  <p></p>
                </table>
              </div>
              <font face="Courier New, Courier, mono" size="2">
              <% end if
       
          rs.Close
  Conn.Close
  Set rs = Nothing
  Set Conn = Nothing
  %>
Avatar billede webbygger Nybegynder
16. januar 2005 - 22:54 #30
Softspot - her ser du min tabel kommen, hvis det er til nogen hjælp http://www.web-byggeren.dk/eksperten/tabel.jpg
Avatar billede softspot Forsker
16. januar 2005 - 22:55 #31
Jamen, du har jo ikke udskiftet den SQL jeg viste dig...?
Avatar billede softspot Forsker
16. januar 2005 - 22:57 #32
Kan du også smide et billede af anm-tabellen?
Avatar billede webbygger Nybegynder
16. januar 2005 - 22:58 #33
Avatar billede webbygger Nybegynder
16. januar 2005 - 23:01 #34
Avatar billede softspot Forsker
16. januar 2005 - 23:06 #35
Er der "hårdt" linieskift efter SQL-sætningen?
Avatar billede webbygger Nybegynder
16. januar 2005 - 23:11 #36
NÆææ det var bare mig det roder, men nu ser den sådan ud:

<%
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & server.MapPath("jerg.mdb")
sql2 = "SELECT TOP 5 kommen.*, anm.* FROM kommen INNER JOIN anm ON kommen.kategori = anm.id WHERE kommen.kategori = '" & request.querystring("rid") & "'"
Set rs = Conn.Execute (sql2)
%>
              </font>
              <p> <font face="Courier New, Courier, mono" size="3">
                <%
if rs.EOF then
%>
                <span class="overskrift"><font color="#FF0000"><b>Ingen anmeldelser
                endnu! </b></font> </span>
                <%
else
%>
                </font></p>
              <div align="center">
                <table height="8" cellspacing="1" align="center" cellpadding="2" border="0" bgcolor="#000000" width="700">
                  <tr bgcolor="#CCCCCC">
                    <td width="82%">
                      <div align="center"><font face="Courier New, Courier, mono" size="3" color="#333333"><b>5
          Seneste kommentarer</b></font></div>
                    </td>
                  </tr>
                  <%
Do Until rs.EOF
%>
                  <tr bgcolor="#E5E5E5">
                   
      <td width="82%"><font face="Courier New, Courier, mono" size="3"> <a href="/eksperten/popop.asp?rid=<%= rs("id") %>">
      <% = rs("kategori") %>
      <% = rs("produkt") %>
      <% = rs("dato") %>
        skrevet af
        <% = rs("navn") %>
        </a> <font color="#FF0000" size="2"></font></font></td>
                  </tr>
                  <%
rs.MoveNext
Loop
%>
                  <p></p>
                </table>
              </div>
              <font face="Courier New, Courier, mono" size="2">
              <% end if
       
          rs.Close
  Conn.Close
  Set rs = Nothing
  Set Conn = Nothing
  %>

Og fejlen ser du her http://www.web-byggeren.dk/eksperten/top5test.asp
Avatar billede softspot Forsker
16. januar 2005 - 23:12 #37
Nå ja! Jeg har jo ikke fået fjernet strengtypen fra SQL-sætningen... :(

Din where skal se sådan ud:

WHERE kommen.kategori = " & request.querystring("rid")

resten af SQL-sætningen er vist stadig OK.
Avatar billede webbygger Nybegynder
16. januar 2005 - 23:14 #38
Det er da utroligt http://www.web-byggeren.dk/eksperten/top5test.asp som det skidt kan drille
Avatar billede softspot Forsker
16. januar 2005 - 23:19 #39
Der skal stadig en parameter på top5test.asp (f.eks. top5test.asp?rid=1) eller fungerer det ikke. Hvis din side kaldes uden rid-parameteren, skal du vise en fejl eller alle (dvs. helt fjerne WHERE-delen af din SQL-sætning).
Avatar billede softspot Forsker
16. januar 2005 - 23:22 #40
Du har godt nok et check med (if rs.EOF then...), men du er også nød til at checke om Request.QueryString("rid") = "" eller Request.QueryString("rid") Is Nothing. Hvis den er det skal du som nævnt i forrige post, undlade at sætte WHERE på SQL-sætningen...
Avatar billede webbygger Nybegynder
16. januar 2005 - 23:32 #41
Den skal ikke ha noget parameter top5test.asp. men til den side kommentaren er oprettet i !!!

Ligesom i de sidest 5 anmeldelser http://www.web-byggeren.dk/eksperten/anmeldelse.asp
Avatar billede softspot Forsker
16. januar 2005 - 23:37 #42
Jeg er forvirret...!

Nå, men hvis der ikke er nogle parametre til siden, så kan der heller ikke være nogen Request.QueryString("rid") og dermed skal din SQL-sætning se således ud:

sql2 = "SELECT TOP 5 kommen.*, anm.* FROM kommen INNER JOIN anm ON kommen.kategori = anm.id"
Avatar billede softspot Forsker
16. januar 2005 - 23:39 #43
Jeg skal til køjs nu, men checker lige op på denne tråd imorgen på et eller andet tidspunkt...
Avatar billede webbygger Nybegynder
16. januar 2005 - 23:40 #44
Du skal i hvert fald har tak for hjælpen endtil nu

God nat
Avatar billede webbygger Nybegynder
17. januar 2005 - 07:42 #45
Jaja nu ligner det noget !!!
Jeg har dog ændret navn + dato i kommen til kommennavn og kommendato.

Lige umiddelbart er det eneste problem, at den ikke opdater når der er kommet en ny kommentar, men jeg kikke lige en gang ekstra på det efter fyraften !
Avatar billede webbygger Nybegynder
17. januar 2005 - 17:33 #46
Hej softspot !

Nu har jeg siddet og kikke lidt på det!!

Som sagt opdater den ikke når man tilføjer en ny kommentar, men det skyldes at den tage de 5 første poster i kommen og ikke de 5 sidste, det har du garanteret en løsning på ;o)
Avatar billede webbygger Nybegynder
17. januar 2005 - 17:49 #47
Tro det eller lade være - jeg har fået det til at virke med denne sætning

sql2 = "SELECT TOP 5 kommen.*, anm.* FROM kommen INNER JOIN anm ON kommen.kategori = anm.id ORDER BY kommen.Id DESC "


Så hvis alt går vel høre du ikke mere fra mig, men drop et svar så du kan får dine velfortjente point
Avatar billede softspot Forsker
17. januar 2005 - 19:24 #48
Sorry, jeg ikke kom på før, men der kom lige noget i vejen.

Glad for at høre du fandt en løsning på den sidste udfordring :)
Avatar billede webbygger Nybegynder
17. januar 2005 - 19:37 #49
HMmmm det går ikke altid som præsten prædiker....

Den kan ikke finde kommendato + kommennavn når jeg sætter koden ind på en anden side sammen er nogle andre koder !!!

Her virker det ikke - http://www.lystfiskerens.net/anmeldelse.asp
og her virker det - http://www.lystfiskerens.net/anmeldelse/top5test.asp
Avatar billede webbygger Nybegynder
17. januar 2005 - 19:41 #50
NU ER jeg squ forvirret, hvis jeg includere filen http://www.lystfiskerens.net/anmeldelse/top5test.asp så virker det !?!?!?!?!?!?
Avatar billede webbygger Nybegynder
17. januar 2005 - 19:50 #51
Det var "bare" mig der fumlede !!!


TUSIND MANGE TAK FOR HJÆLPEN SOFTSPOT
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