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
Annonceindlæg tema
Offentlig digitalisering
Fra effektivisering til digital suverænitet. Hvordan skaber det offentlige en digital fremtid med AI, sikkerhed og kontrol i centrum?
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
16. januar 2005 - 18:45
#2
Hvad med: SELECT kommen.*, anm.* FROM kommen, anm
16. januar 2005 - 18:46
#3
Sorry, det skulle have været: SELECT TOP 5 kommen.*, anm.* FROM kommen, anm
16. januar 2005 - 18:47
#5
softspot: hvad er top i anm ?
16. januar 2005 - 18:48
#6
glem lige min sidste kommentar
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.
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 ;)
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 ????
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") & "'"
16. januar 2005 - 19:31
#11
...og så skal det naturligvis være "SELECT TOP 5..."
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
16. januar 2005 - 20:12
#13
jeg har vist tastet forkert... det hedder request og ikke requst...
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)
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?
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 %>
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.
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 !!!
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)
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
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)?
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?
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 ?
16. januar 2005 - 22:31
#25
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).
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
16. januar 2005 - 22:43
#28
DET VAR LIGE GODT GROV!?? :) Kan jeg få dig til at paste din kode ind igen?
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 %>
16. januar 2005 - 22:55
#31
Jamen, du har jo ikke udskiftet den SQL jeg viste dig...?
16. januar 2005 - 22:57
#32
Kan du også smide et billede af anm-tabellen?
16. januar 2005 - 22:58
#33
16. januar 2005 - 23:01
#34
16. januar 2005 - 23:06
#35
Er der "hårdt" linieskift efter SQL-sætningen?
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
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.
16. januar 2005 - 23:14
#38
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).
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...
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"
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...
16. januar 2005 - 23:40
#44
Du skal i hvert fald har tak for hjælpen endtil nu God nat
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 !
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)
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
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 :)
17. januar 2005 - 19:50
#51
Det var "bare" mig der fumlede !!! TUSIND MANGE TAK FOR HJÆLPEN SOFTSPOT
Kurser inden for grundlæggende programmering