Du får lägga till en
order by kolumn
till din select-sats.
------------------
essentitia preter non sans multiplicandum
16 svar · 228 visningar · startad av Lazerzubb
Hur gör man så att träffarna från databasen listas med en SQL sats med
A högst upp och sedan fortsättningen på alfabetet.
------------------
Helvetet är den plats där engelsmännen lagar maten, Italienarna dirigerar trfiken och tyskarna står för underhållningen.
Du får lägga till en
order by kolumn
till din select-sats.
------------------
essentitia preter non sans multiplicandum
Var ska den ligga här.
mSQL="SELECT * FROM search1 WHERE "
mWhere="(country LIKE '%%') OR (province LIKE '%%') OR (city LIKE '%%')"
------------------
Helvetet är den plats där engelsmännen lagar maten, Italienarna dirigerar trfiken och tyskarna står för underhållningen.
Den skall alltid ligga sist i selectsatsen, dvs
mSQL="SELECT * FROM search1 WHERE "
mWhere="(country LIKE '%%') OR (province LIKE '%%') OR (city LIKE '%%') order by country,province,city"
Nu kommer resultatet att sorteras i stigande ordning med avseende på country i första hand och med avseende på provins i andra hand och så vidare.
------------------
essentitia preter non sans multiplicandum
Error Type:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression '((country LIKE '%Usa%') OR (province LIKE '%Usa%') OR (city LIKE '%Usa%') order by country)'.
/test/visa.asp, line 139
------------------
Helvetet är den plats där engelsmännen lagar maten, Italienarna dirigerar trfiken och tyskarna står för underhållningen.
Nja, du måste avsluta parentesen innan order by.
((country LIKE '%Usa%') OR (province LIKE '%Usa%') OR (city LIKE '%Usa%')) order by country
------------------
essentitia preter non sans multiplicandum
detta är ju koden
mSQL="SELECT * FROM search1 WHERE "
mWhere="(country LIKE '%%') OR (province LIKE '%%') OR (city LIKE '%%') order by country"
skulle jag lägga till ) efter
city like parantesen?
------------------
Helvetet är den plats där engelsmännen lagar maten, Italienarna dirigerar trfiken och tyskarna står för underhållningen.
Den koden du har där ser ok ut, men i det felmeddelande du fick så var det ett parentespar för mycket.
Du kanske ser ut så här i din kod
mSQL="SELECT * FROM search1 WHERE "
mWhere="(country LIKE '%%') OR (province LIKE '%%') OR (city LIKE '%%') order by country"
mSQL = mSQL & "(" & mWhere & ")"
I så fall så får du skriva
mSQL="SELECT * FROM search1 WHERE "
mWhere="(country LIKE '%%') OR (province LIKE '%%') OR (city LIKE '%%') "
mSQL = mSQL & "(" & mWhere & ") order by country"
Order by skall ligga allra sist och det får inte vara några avslutande parenteser efteråt.
------------------
essentitia preter non sans multiplicandum
[Redigerat av LarsG den 09 jul 2001]
Här är lite av koden.
dim i,j,mQuery,mQueryArr,mAndArr,mNotArr,mOrArr,mSQL,mWhere
'grunddelarna i frågan
mSQL="SELECT * FROM search1 WHERE "
mWhere="(country LIKE '%%') OR (province LIKE '%%') OR (city LIKE '%%')") order by country"
'sökfältets värde
mQuery=request.form("sok")
'loopa igenom allt och ersätt mellanslag inom citattecken med chr(1).
'Denna bit går att göra med reguljära uttryck också
for i=1 to len(mQuery)
mAsc=asc(mid(mQuery,i,1))
if mAsc=34 then
mCount=mCount+1
blnInQ=not blnInQ
else
if blnInQ and mAsc=32 then
mQuery=left(mQuery,i-1) & chr(1) & mid(mQuery,i+1)
end if
end if
------------------
Helvetet är den plats där engelsmännen lagar maten, Italienarna dirigerar trfiken och tyskarna står för underhållningen.
Du kan antingen ta ORDER BY Kol.namn DESC eller ASC beroende på om du vill ha fallande eller stigande..
------------------
1 Man, 1 Million dead, The odds are just about even - Ash
Jag vill ha från a Och nedåt.
men kan du lägga in koden i min får det inte att fungera.
------------------
Helvetet är den plats där engelsmännen lagar maten, Italienarna dirigerar trfiken och tyskarna står för underhållningen.
funkar det inte om du skriver ORDER BY Country DESC där du har order by country nu ?
------------------
1 Man, 1 Million dead, The odds are just about even - Ash
NIX
Error Type:
Microsoft VBScript compilation (0x800A0401)
Expected end of statement
/test/visa.asp, line 73, column 72
mWhere="(country LIKE '%%') OR (province LIKE '%%') OR (city LIKE '%%')") ORDER BY Country DESC"
KODEN
dim i,j,mQuery,mQueryArr,mAndArr,mNotArr,mOrArr,mSQL,mWhere
'grunddelarna i frågan
mSQL="SELECT * FROM search1 WHERE "
mWhere="(country LIKE '%%') OR (province LIKE '%%') OR (city LIKE '%%')") ORDER BY Country DESC"
'sökfältets värde
mQuery=request.form("sok")
------------------
Helvetet är den plats där engelsmännen lagar maten, Italienarna dirigerar trfiken och tyskarna står för underhållningen.
vad får du om du skriver ut sqlsattsen ?
------------------
1 Man, 1 Million dead, The odds are just about even - Ash
Här kommer hela koden
[KOD]
<!-- #include virtual="land/adovbs.stm" -->
<%
Response.Cachecontrol="Public"
Set Connection = Server.CreateObject("ADODB.Connection")
Connection.Open "driver={Microsoft Access Driver (*.mdb)};dbq=D:/inetpub/wwwroot/search.mdb"
dim i,j,mQuery,mQueryArr,mAndArr,mNotArr,mOrArr,mSQL,mWhere
'grunddelarna i frågan
mSQL="SELECT * FROM search1 WHERE "
mWhere="(country LIKE '%%') OR (province LIKE '%%') OR (city LIKE '%%') ORDER BY Country DESC"
'sökfältets värde
mQuery=request.form("sok")
'loopa igenom allt och ersätt mellanslag inom citattecken med chr(1).
'Denna bit går att göra med reguljära uttryck också
for i=1 to len(mQuery)
mAsc=asc(mid(mQuery,i,1))
if mAsc=34 then
mCount=mCount+1
blnInQ=not blnInQ
else
if blnInQ and mAsc=32 then
mQuery=left(mQuery,i-1) & chr(1) & mid(mQuery,i+1)
end if
end if
next
'om antalet citattecken är ojämnt ignoreras de helt
if mCount mod 2 <> 0 then
mQuery=replace(mQuery,chr(1)," ")
end if
'ta bort citattecknen
mQuery=replace(mQuery,chr(34),"")
'ersätt mellanslag med chr(0) och mellanslag
mQuery=chr(0) & replace(mQuery," "," " & chr(0))
'splitta upp i en array
mQueryArr=split(mQuery," ")
'skapa arrayer för AND, AND NOT och OR.
'chr(0) gör det nu möjligt att matcha endast början på strängarna
mAndArr=filter(mQueryArr,chr(0) & "+",true)
mQueryArr=filter(mQueryArr,chr(0) & "+",false)
mNotArr=filter(mQueryArr,chr(0) & "-",true)
mQueryArr=filter(mQueryArr,chr(0) & "-",false)
'återskapa strängarna (ersätt chr(1) med mellanslag) och
'skapa WHERE-satser i arrayerna
for i=0 to ubound(mAndArr)
mAndArr(i)=replace(mAndArr(i),chr(1)," ")
mAndArr(i)=replace(mWhere,"%%","%" & mid(mAndArr(i),3) & "%")
next
for i=0 to ubound(mNotArr)
mNotArr(i)=replace(mNotArr(i),chr(1)," ")
mNotArr(i)=replace(mWhere,"%%","%" & mid(mNotArr(i),3) & "%")
next
for i=0 to ubound(mQueryArr)
mQueryArr(i)=replace(mQueryArr(i),chr(1)," ")
mQueryArr(i)=replace(mWhere,"%%","%" & mid(mQueryArr(i),2) & "%")
next
'tejpa ihop en färdig fråga
mQuery=join(mQueryArr," OR ")
if mQuery<>"" then
mQuery="(" & mQuery & ")"
if ubound(mAndArr) > -1 then mQuery=mQuery & " AND "
end if
mQuery=mQuery & join(mAndArr," AND ")
if mQuery<>"" and ubound(mNotArr) > -1 then mQuery=mQuery & " AND NOT "
mQuery=mSQL & mQuery & join(mNotArr," AND NOT ")
set rs=Connection.execute (mQuery)
%>
<%
If rs.EOF Then
Response.write("We searched and didn't find what you wanted...")
Else
%>
<%
do until rs.eof
if bgcolor = "#FFFFFF" then bgcolor = "#FFCC66" Else bgcolor = "#FFFFFF" End if
%>
<tr>
<td width="243" height="1" bgcolor="<%=bgcolor%>"><font face="Verdana" size="1" color="#000000"><%=rs("ID")%> <a href="detalj.asp?id=<%=rs("ID")%>"><% Response.Write "" & Split(rs("country"), ";")(1)%>, <%=rs("province")%>, <%=rs("city")%> </a></font></td>
<td width="145" height="1" bgcolor="<%=bgcolor%>"><font face="Verdana" size="1" color="#000000"><%=rs("bedf")%></font></td>
<td width="40" height="1" bgcolor="<%=bgcolor%>"><font face="Verdana" size="1" color="#000000"><%=rs("xbed")%></font></td>
<td width="192" height="1" bgcolor="<%=bgcolor%>"><font face="Verdana" size="1" color="#000000">Hög: <%=rs("high")%><br>Låg: <%=rs("low")%></font></td>
</tr>
<%
rs.MoveNext
Loop
End If
rs.close
set rs=nothing
Connection.close
set Connection=nothing
%>
------------------
Helvetet är den plats där engelsmännen lagar maten, Italienarna dirigerar trfiken och tyskarna står för underhållningen.
Du får ta flytta på order by och lägga till det precis innan du gör execute.
<!-- #include virtual="land/adovbs.stm" -->
<%
Response.Cachecontrol="Public"
Set Connection = Server.CreateObject("ADODB.Connection")
Connection.Open "driver={Microsoft Access Driver (*.mdb)};dbq=D:/inetpub/wwwroot/search.mdb"
dim i,j,mQuery,mQueryArr,mAndArr,mNotArr,mOrArr,mSQL,mWhere
'grunddelarna i frågan
mSQL="SELECT * FROM search1 WHERE "
mWhere="(country LIKE '%%') OR (province LIKE '%%') OR (city LIKE '%%') "
'sökfältets värde
mQuery=request.form("sok")
'loopa igenom allt och ersätt mellanslag inom citattecken med chr(1).
'Denna bit går att göra med reguljära uttryck också
for i=1 to len(mQuery)
mAsc=asc(mid(mQuery,i,1))
if mAsc=34 then
mCount=mCount+1
blnInQ=not blnInQ
else
if blnInQ and mAsc=32 then
mQuery=left(mQuery,i-1) & chr(1) & mid(mQuery,i+1)
end if
end if
next
'om antalet citattecken är ojämnt ignoreras de helt
if mCount mod 2 <> 0 then
mQuery=replace(mQuery,chr(1)," ")
end if
'ta bort citattecknen
mQuery=replace(mQuery,chr(34),"")
'ersätt mellanslag med chr(0) och mellanslag
mQuery=chr(0) & replace(mQuery," "," " & chr(0))
'splitta upp i en array
mQueryArr=split(mQuery," ")
'skapa arrayer för AND, AND NOT och OR.
'chr(0) gör det nu möjligt att matcha endast början på strängarna
mAndArr=filter(mQueryArr,chr(0) & "+",true)
mQueryArr=filter(mQueryArr,chr(0) & "+",false)
mNotArr=filter(mQueryArr,chr(0) & "-",true)
mQueryArr=filter(mQueryArr,chr(0) & "-",false)
'återskapa strängarna (ersätt chr(1) med mellanslag) och
'skapa WHERE-satser i arrayerna
for i=0 to ubound(mAndArr)
mAndArr(i)=replace(mAndArr(i),chr(1)," ")
mAndArr(i)=replace(mWhere,"%%","%" & mid(mAndArr(i),3) & "%")
next
for i=0 to ubound(mNotArr)
mNotArr(i)=replace(mNotArr(i),chr(1)," ")
mNotArr(i)=replace(mWhere,"%%","%" & mid(mNotArr(i),3) & "%")
next
for i=0 to ubound(mQueryArr)
mQueryArr(i)=replace(mQueryArr(i),chr(1)," ")
mQueryArr(i)=replace(mWhere,"%%","%" & mid(mQueryArr(i),2) & "%")
next
'tejpa ihop en färdig fråga
mQuery=join(mQueryArr," OR ")
if mQuery<>"" then
mQuery="(" & mQuery & ")"
if ubound(mAndArr) > -1 then mQuery=mQuery & " AND "
end if
mQuery=mQuery & join(mAndArr," AND ")
if mQuery<>"" and ubound(mNotArr) > -1 then mQuery=mQuery & " AND NOT "
mQuery=mSQL & mQuery & join(mNotArr," AND NOT ")
mQuery = mQuery & " ORDER BY Country"
set rs=Connection.execute (mQuery)
%>
<%
If rs.EOF Then
Response.write("We searched and didn't find what you wanted...")
Else
%>
<%
do until rs.eof
if bgcolor = "#FFFFFF" then bgcolor = "#FFCC66" Else bgcolor = "#FFFFFF" End if
%>
<tr>
<td width="243" height="1" bgcolor="<%=bgcolor%>"><font face="Verdana" size="1" color="#000000"><%=rs("ID")%> <a href="detalj.asp?id=<%=rs("ID")%>"><% Response.Write "" & Split(rs("country"), ";")(1)%>, <%=rs("province")%>, <%=rs("city")%> </a></font></td>
<td width="145" height="1" bgcolor="<%=bgcolor%>"><font face="Verdana" size="1" color="#000000"><%=rs("bedf")%></font></td>
<td width="40" height="1" bgcolor="<%=bgcolor%>"><font face="Verdana" size="1" color="#000000"><%=rs("xbed")%></font></td>
<td width="192" height="1" bgcolor="<%=bgcolor%>"><font face="Verdana" size="1" color="#000000">Hög: <%=rs("high")%><br>Låg: <%=rs("low")%></font></td>
</tr>
<%
rs.MoveNext
Loop
End If
rs.close
set rs=nothing
Connection.close
set Connection=nothing
%>
Om du har DESC med i ORDER BY så får du sorterat i fallande ordning, dvs Z till A, så jag tog bort det också.
------------------
essentitia preter non sans multiplicandum
Det funkar Tack.
------------------
Helvetet är den plats där engelsmännen lagar maten, Italienarna dirigerar trfiken och tyskarna står för underhållningen.