webForumDet fria alternativet

Loopa två olika sql-satser

ASP

13 svar · 234 visningar · startad av Karlsson

Medlem sedan maj 2000252 inlägg
Frågan#1

Jag har två DIV:ar på min sida där jag skulle vilja loopa två olika sql-satser, till vänster skulle jag vilja loopa topp-5 från en databas, och till höger resten.
Har provat med:

sSQL="SELECT TOP 5 * FROM texter WHERE content = '"& content &"' ORDER BY datum DESC"

sSQL2="SELECT FROM texter WHERE ID NOT IN (SELECT TOP 5 ID FROM texter ORDER BY datum DESC)

Om jag nu, mot förmodan skulle få sql-satsen att funka, går det då att skriva ut dom med två olika loopar, och isf hur i hela friden skulle det då se ut???

/MK

Medlem sedan dec. 20002 526 inlägg
#2

Att gora loopar i varandra har jag fatt lara mig att det ar inte bra!! Men det gar, men blir prestandakravande... fragan ar det om det inte gar att gora nagon sorts kombination i samma sql? jag vet ej

Medlem sedan maj 2000252 inlägg
#3

Mitt största bekymmer är egentligen att jag får en bild som också loopas i den högra div:en, det är bl.a. därför jag pysslar med detta.
Just nu verkar det iaf vara den andra sql-satsen den klagar på...
:-(

Medlem sedan dec. 20002 526 inlägg
#4

du far felmess alltsa? skriv det och skriv ut bada dina sql satser (response.write sSQL och sSQL2 innan execute)

Medlem sedan maj 2000252 inlägg
#5

Jodu, men inte nu!
:-)
Gonatt jord

Medlem sedan dec. 20002 526 inlägg
#6

jaha..... hmm... du far la posta nar du gar upp igen... Tank pa att crisse ar alltid vaken nar ni andra sover... :)

"Erat snus i gryningen... - crisse6"

Medlem sedan feb. 200112 078 inlägg
#7

Att gora loopar i varandra har jag fatt lara mig att det ar inte bra!!

Sant crisse, men jag tror du missuppfattar hans fråga lite. :)

Du har egentligen inte något annat alternativ än att skapa två olika recordset och sedan använda de vanliga metoderna för visning på respektive datamängd.

sSQL="SELECT TOP 5 * FROM texter WHERE content = '"& content &"' ORDER BY datum DESC"
sSQL2="SELECT FROM texter WHERE ID NOT IN (SELECT TOP 5 ID FROM texter ORDER BY datum DESC)
set rs = conn.execute(sSQL)
set rs2 = conn.execute(sSQL2)

if not rs.eof then
  do until rs.eof 
    response.write rs(0) & "<br>"
  rs.movenext
  loop
end if

if not rs2.eof then
  do until rs2.eof 
    response.write rs2(0) & "<br>"
  rs2.movenext
  loop
end if

set rs = nothing
set rs2 = nothing
Medlem sedan maj 2000252 inlägg
#8

Det löser sig, sa han som sket i vasken...
Fast kanske ändå inte!
Hade glömt öppna ett ADODB.Recordset för rs2... stryk skulle jag ha minsann.
Men nu klagar sidan på själva SQL-satsen igen, har provat ett otal varianter, just nu:

sSQL2="SELECT FROM texter WHERE id NOT IN (SELECT TOP 3 id FROM texter ORDER BY datum DESC)"

Även:

sSQL2="SELECT FROM texter WHERE content = '"& content &"' AND ID NOT IN (SELECT TOP 3 id FROM texter WHERE content = '"& content &"' ORDER BY datum DESC)"

men får följande felmess:

Microsoft OLE DB Provider for ODBC Drivers fel '80040e14' 

[Microsoft][Drivrutin för ODBC Microsoft Access] SELECT-uttrycket innehåller ett reserverat ord eller argument som antingen är felstavat eller utelämnat, eller så är skiljetecknen felaktigt använda.

Hå hå, ja ja

Medlem sedan feb. 200112 078 inlägg
#9

Reserverade ord skall man akta sig för i SQL. :)

sSQL2="SELECT FROM [texter] WHERE id NOT IN (SELECT TOP 3 id FROM [texter] ORDER BY [datum] DESC)"

sSQL2="SELECT FROM [texter] WHERE [content] = '"& content &"' AND ID NOT IN (SELECT TOP 3 id FROM [texter] WHERE [content] = '"& content &"' ORDER BY [datum] DESC)"
Medlem sedan maj 2000252 inlägg
#10

Är lite skeptisk till att det skulle vara det felet, men har iaf klamrat båda sql-satserna nu, postar lite kod få se om nåt av det kan bringa lite klarhet!

<%
Set Conn = Server.CreateObject("ADODB.Connection")
Set rs = Server.CreateObject("ADODB.Recordset")
Set rs2 = Server.CreateObject("ADODB.Recordset")
Conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=c:\inetpub\wwwroot\fjallsaker\databas\fjallsaker.mdb"
content=Request.Querystring("content")
sSQL="SELECT TOP 3 * FROM [texter] WHERE [content] = '"& content &"' ORDER BY [datum] DESC"
sSQL2="SELECT FROM [texter] WHERE [content] = '"& content &"' AND ID NOT IN (SELECT TOP 3 id FROM [texter] WHERE [content] = '"& content &"' ORDER BY [datum] DESC)"
%>
<img src="bilder/gfx/<%=rs("bild")%>.gif">
<%
If content = "nyhet" then
'*********************************************************************
'Gör allt som står härifrån och ner om det är nyhet som efterfrågas...
'*********************************************************************
rs.Open sSQL, Conn
Do While Not rs.EOF
%>	
<div id="left">
 		<p span style="margin-top: 0px"><b><%=rs("datum")%></b></span></p>
		<p class="blue18"><%=rs("rubrik")%></p>
		<p class="ingress"><%=rs("ingress")%></p>
		<p><%=rs("texter")%></p>
		<p><%=rs("forfattare")%></p>
		<p><hr width="100%"></p>
</div>
<%
rs.MoveNext
Loop
rs.Close
%>
<div id="right">
	<img src="bilder/gfx/rubrik_arkiv.gif" alt="rubrikbild arkiv" width="244" height="60" hspace="0" vspace="0"> 
 		<p><b><%=rs2("datum")%></b></p>
		<p class="rubliten10fet"><%=rs2("rubrik")%></p>
		<p><hr width="100%"></p>
</div>
<%
'*****************************************
'Här slutar if-satsen som gällde nyheterna
'*****************************************

Får följande meddelande:

ADODB.Recordset fel '800a0cc1' 

Item cannot be found in the collection corresponding to the requested name or ordinal.
Medlem sedan mars 20023 561 inlägg
#11

Att döma av felmeddelandet så har du fel kolummnamn någonstans.

Medlem sedan feb. 200112 078 inlägg
#12

Är du säker på att det felmeddelandet kommer från raderna med SQL-satserna på? Det kan komma från någon av dina anrop mot recordset:et längre ner, alltså när du skriver ut det.

Medlem sedan dec. 200012 464 inlägg
#13

I SQL2 så saknas *

sSQL2="SELECT * FROM [texter]
Medlem sedan feb. 200112 078 inlägg
#14

LarsG skrev:

I SQL2 så saknas *

sSQL2="SELECT * FROM [texter]

Gah. :OO För enkelt. ;)

254 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)