08. april 2002 - 19:18Der er
11 kommentarer og 1 løsning
Ikke SELECT TOP, omvendt...
Davs.
Er der en måde at vælge f.eks. de 10 ældste rækker i en database. Altså ikke SELECT TOP 10 * FROM blog Order By Id Desc, men noget a la SELECT LAST eller SELECT BOTTOM... Hvad ved jeg?
Idéen skal bruges til et arkiv, der automatisk lister alle rækker i en database, minus de ti nyeste, der vises på forsiden som nyheder. Forsiden med de ti nyeste var ikke svær, det var bare den SELECT TOP 10 jeg skrev længere oppe, det er mere det med at få trukket linjer ud nedefra der er svær.
Hvis jeg bare fjerner Desc tager den godt nok linjer fra bunden, men så bliver de listet omvendt på siden (med den ældste dato øverst). Det synes jeg ikke om.
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Ok det gik lidt for hurtigt den udskrive kun de 10 sidste, men spørgsmålet var også lukke da jeg kikked på det. Denne SQL hendter alle undtage de 10 første:
strSQL = "SELECT * FROM blog WHERE ID NOT IN (SELECT TOP 10 ID FROM blog;);"
det du skriver opnåes bedre med en simpel "select top 10 * from blog" Du har gang i en sub select, som faktisk betyder at du har fat i 2 record set for at få de 10 første rækker ud.
Nej det gør jeg ikke, jeg får et recordset. Det er en SELECT i en SELCET ikke efter hinanden. Skulle jeg have flere reecord set skulle SQL være "SLECELT * FROM a;SELECT * FROM b;" så ville jeg fåto recordset som Access forøvrigt ikke understytter.
"select top 10 * from blog" vælger de 10 i toppen, men man skulle jo havde alle andre end de 10 i toppen. Jeg skulle lige så godt skrive "SELECT * FROM blog WHERE ID NOT IN (1,2,3,4,5,6,7,8,9,10);", men så er man jo ikke sikker på at det er TOP 10 man har fået fat i. Derfor skiftes 1,2,3,4,5,6,7,8,9,10 ud med en SQL som vælge TOP 10 "SELECT TOP 10 ID FROM blog"
Nu er dette relativt let at lave en løkke som springe de 10 første over men det et meget bedre at få databasen til at lave arbejded med at få et rigtigt recordset som bare kan udskrives så, så man ikke skal tænke på at opfinde en masse løkker.
PRØV SELV den SQL uden at gætte på hvad den hendter ud.
Ja det er rigtig ved den første gik det lidt for hurtigt :)
Synes godt om
Ny brugerNybegynder
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.