Jag sitter och försöker sätta ihop en nästlad SQL-sats i mitt ASP-applikation, som ska utnyttja databasmotorn för att hämta information med GetRows till en array. Jag skulle vilja sortera på informationen som hämtas ifrån den nästlade SELECT-satsen eftersom det är ett datum som hämtas ut... Kod: ORDER BY fältnamn Som jag skrev i huvudtråden... "Jag har provat att köra den nästlade SELECT-sasten som "...tblText.fldIndex) AS fldLastPost" och sen "ORDER BY fldLastPost", men då hittar den inte fldLastPost och det är fel i ORDER BY-uttrycket... " I Access kan du inte använda alias för sortering, du får helt enkelt skriva såhär: Tydligen så går det inte att köra en nästlad SQL-fråga i ORDER BY heller "Syntaxfel. i frågeuttrycket", troligtvis så måste jag skriva en ny SQL-fråga som bara plockar ut datumet som är aktuellt. Du kan joina så här: ...och vad har du för utbildning Åsa?... Sån vill jag oxå ha... :) Åh, jag är nog ganska självlärd... obotlig Googlare ;-) Kul att det kunde vara till nytta!Sortering på nästlad SELECT-sats...
SELECT tblTest.fld1, (SELECT TOP1 tblDatum.tblDate FROM tblDatum WHERE tblDatum.fldIndex = tblTest.fldIndex) FROM tblText ORDER BY 2
I detta fall så spelar det ingen roll om jag byter 2:an till en 1:a, den kör ORDER BY på tblTest.fld1 ändå.
Jag har provat att köra den nästlade SELECT-sasten som "...tblText.fldIndex) AS fldLastPost" och sen "ORDER BY fldLastPost", men då hittar den inte fldLastPost och det är fel i ORDER BY-uttrycket...
Detta är bara påhittade tabeller med namn, men det är en ordentlig komprimering av vad jag har satt ihop... och allt fungerar förutom att jag inte kan få till sorteringen.
Jag får ut rätt innhåll när jag skriver ut min array... men jag får den inte att sortera på den informationen. Är det någon som känner till något om detta och kan antinge tipsa på ev. lösning eller hur man bör sätta ihop några sökord för vår käre vän google? (Har provat typ med "order by nested select" m.m.)Sv: Sortering på nästlad SELECT-sats...
ska det vara.
ORDER BY 2 betyder att du slänger på en 2:a sist på varje rad och sen sorterar på den kolumnen.
Vad du ska göra är alltså
SELECT tblTest.fld1, (SELECT TOP1 tblDatum.tblDate FROM tblDatum WHERE tblDatum.fldIndex = tblTest.fldIndex) As X FROM tblText ORDER BY XSv:Sortering på nästlad SELECT-sats...
Direkt när jag säger att den skall sortera på det "påhittade namnet" så får jag upp detta med:
Connect.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & server.mappath("db/dbForum.mdb")
Feltyp:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E10)
[Microsoft][Drivrutin för ODBC Microsoft Access] För få parametrar angavs. 1 förväntades.
Och med...
Connect.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= " & Server.MapPath("db/dbForum.mdb")
Feltyp:
Microsoft JET Database Engine (0x80040E10)
Det har inte angetts något värde för en eller flera nödvändiga parametrar.
Tar jag bort ORDER BY så slipper jag felmeddelandet men jag får inte till sorteringen... det verkar som om det påhittade namnet inte finns förrens allt är uthämtat ifrån databasen... Jag kommer bara åt namnet när jag skriver ut mitt recordset i min ASP kod.
Gjorde en snabbkoll för att hämta ut alla datum, men bytte datumfältetsnamn med AS och det verkar som om det inte går att sortera på det nya AS-namnet... Finns det någon annan PROVIDER man kan testa eller finns det något tips på hur man kan ange sökordningen beroende på positionen i vilka fält som den skall hämta ut, typ min ORDER BY 2...?Sv: Sortering på nästlad SELECT-sats...
SELECT tblTest.fld1, (SELECT TOP1 tblDatum.tblDate FROM tblDatum WHERE tblDatum.fldIndex = tblTest.fldIndex) FROM tblText ORDER BY (SELECT TOP1 tblDatum.tblDate FROM tblDatum WHERE tblDatum.fldIndex = tblTest.fldIndex)
/JohanSv:Sortering på nästlad SELECT-sats...
Om jag hämtar data ur en databas och loopar ut innhållet så kan jag antige välja att skriva:
Response.Write RecSet("fld1") eller Response.Write RecSet(0), det finns inget sådant inbyggt i ORDER-funktinen att jag kan sätta sorteringen på columnen 1 utan att namge fältet?Sv: Sortering på nästlad SELECT-sats...
SELECT fld1, TopDatum FROM tblTest INNER JOIN (SELECT fldIndex, Max(fldDatum) AS TopDatum FROM tblDatum GROUP BY fldIndex) AS d ON tblTest.fldIndex = d.fldIndex ORDER BY TopDatum;Sv:Sortering på nästlad SELECT-sats...
Funkade precis som jag ville... TACK! Sv: Sortering på nästlad SELECT-sats...