Avatar billede brownghost Nybegynder
01. maj 2003 - 00:02 Der er 21 kommentarer og
1 løsning

SELECT Fra top 20 og op til 40 from.......

oki hvordan er det jeg laver det her..

strSQL = "SELECT TOP 20 * FROM News ORDER BY Date DESC"

er noget på en siden jeg bruger. nu vil jeg gerne have et andet sted på denne side nyhder fra top 20 og op til 40.

Men for at få det skal der laves om...

strSQL = "SELECT TOP FROM 20 TO 40 * FROM News ORDER BY Date DESC"

+ jeg vil gerne have at NEWS kommer til at hede noget andet
det er noget med man kan side And NEWS as 2.News

Så når jeg henter den record skal jeg i stedet for at skrive <%= rsNews("Title") %> skrive <%= rs2.News("Title") %>

Hvorden gør jeg det i denne her linje?:

strSQL = "SELECT TOP 20 * FROM News ORDER BY Date DESC"

Tak.. :)
Avatar billede eagleeye Praktikant
01. maj 2003 - 00:05 #1
Man kan ikke give TOP to parametre som man kan med LIMIT. Så du skal ud i noget med:

Start fra række x. Hent y rækker:

SELECT TOP y feltnavn
FROM (SELECT TOP x + y feltnavn
              FROM tabelnavn
              ORDER BY feltnavn) AS toptabel(feltnavn)
ORDER BY feltnavn DESC
Avatar billede brownghost Nybegynder
01. maj 2003 - 00:11 #2
ØHHHH noget i den her still??
det ser da helt tosset ud gør det ikke??

strSQL = "SELECT TOP 20 * FROM (SELECT TOP 20 + 20 * FROM News ORDER BY ID) AS toptabel(*) ORDER BY ID DESC"
Avatar billede eagleeye Praktikant
01. maj 2003 - 00:13 #3
Ja sådan noget, har du mulighed for at prøve den?
Avatar billede brownghost Nybegynder
01. maj 2003 - 00:15 #4
manger at lave NEWS om til det der med News as 2.NEWS

hvordan gør jeg det??

og jeg forstår heller ikke det her du har lavet??? AS toptabel ??
Avatar billede eagleeye Praktikant
01. maj 2003 - 00:18 #5
I stedet for denne SQL sætning:
strSQL = "SELECT TOP 20 * FROM News ORDER BY Date DESC"

Bruger du denne:
strSQL = "SELECT TOP 20 * FROM (SELECT TOP 20 + 20 * FROM News ORDER BY ID) AS toptabel(*) ORDER BY ID DESC"


Dette (SELECT TOP 20 + 20 * FROM News ORDER BY ID) AS toptabel(*)  betyder bare den laver en tabel som hedder toptable. På samme måde som man bruger as til at lave en kolonne hvis man tælle sine records.
Avatar billede brownghost Nybegynder
01. maj 2003 - 00:24 #6
okay hvordan kalder jeg så informationerne??

<%= rs??????????("Title") %>
Avatar billede eagleeye Praktikant
01. maj 2003 - 00:25 #7
Det skulle gerne være på samme måde som du har gjort før.
Avatar billede brownghost Nybegynder
01. maj 2003 - 00:31 #8
dur jo ikke når jeg har det på siden i forevejen..

det er jo derfor jeg skriver......

oki hvordan er det jeg laver det her..

strSQL = "SELECT TOP 20 * FROM News ORDER BY Date DESC"

er noget på en siden jeg bruger. nu vil jeg gerne have et andet sted på denne side nyhder fra top 20 og op til 40.

et andet sted på denne side
Et andet sted på samme side...

kan da ikke have to af de samme koder på samme side..
eks:
strSQL = "SELECT TOP 20 * FROM News ORDER BY Date DESC"
og
strSQL = "SELECT TOP 20 * FROM (SELECT TOP 20 + 20 * FROM News ORDER BY ID) AS toptabel(*) ORDER BY ID DESC"


DENNE HER SKAL BLIVE PÅ SIDEN, SAMME SIDE DA DEN BRUGES..
strSQL = "SELECT TOP 20 * FROM News ORDER BY Date DESC"
Avatar billede eagleeye Praktikant
01. maj 2003 - 00:36 #9
Du kan lave 2 SQL sætninger først en som hendet de 20 første:

strSQL = "SELECT TOP 20 * FROM News ORDER BY Date DESC"
Set rsNews = conn.Execute(strSQL)


Så kan du hvor du har behov for det hendte de næste ind i et nyt recordset:

strSQL = "SELECT TOP 20 * FROM (SELECT TOP 20 + 20 * FROM News ORDER BY ID) AS toptabel(*) ORDER BY ID DESC"
Set rs2News = conn.Execute(strSQL)


Eller misforstår jeg ??
Avatar billede brownghost Nybegynder
01. maj 2003 - 00:38 #10
oki det prøver jeg lige sec
Avatar billede brownghost Nybegynder
01. maj 2003 - 00:43 #11
Error Type:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC SQL Server Driver][SQL Server]Incorrect syntax near the keyword 'FROM'.
/Default.asp, line 7

det er den her..
strSQL = "SELECT TOP 20 * FROM(SELECT TOP 20 + 20 * FROM News ORDER BY ID) AS toptabel(*) ORDER BY ID DESC"
Avatar billede eagleeye Praktikant
01. maj 2003 - 00:52 #12
Den vil åbenbart ikke havde AS mend så prøv sådan her:


strSQL = "SELECT TOP 20 * FROM (SELECT TOP 20 + 20 * FROM News ORDER BY ID) ORDER BY ID DESC"
Avatar billede brownghost Nybegynder
01. maj 2003 - 00:54 #13
samme resultat..

Error Type:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC SQL Server Driver][SQL Server]Incorrect syntax near the keyword 'FROM'.
/Default.asp, line 7
Avatar billede eagleeye Praktikant
01. maj 2003 - 00:58 #14
Prøv at skrive 40 og ikke 20+20

strSQL = "SELECT TOP 20 * FROM (SELECT TOP 40 * FROM News ORDER BY ID) ORDER BY ID DESC"
Avatar billede brownghost Nybegynder
01. maj 2003 - 00:59 #15
Error Type:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC SQL Server Driver][SQL Server]Incorrect syntax near the keyword 'ORDER'.
/Default.asp, line 7
Avatar billede eagleeye Praktikant
01. maj 2003 - 01:01 #16
Har du en kolonne ID ?? I den føste SQL bruger du Date kolonnen til at sortere på?, så måske ID skal være Date?

Eller så skal der "AS toptable(*) "  med når det er på SQL server. I Access skal det ikke med.
Avatar billede eagleeye Praktikant
01. maj 2003 - 01:07 #17
Jeg er nød til at smutte for i aften, jeg håber du kommer vidre med det.
Avatar billede brownghost Nybegynder
01. maj 2003 - 01:08 #18
Samme resultat.. tror jeg skal have en anden til at give mig lidt hjælp...
Men takker for forsøgende.. :))

Er der en der arbejder med sQL der kan hjælpe her???
Avatar billede eagleeye Praktikant
01. maj 2003 - 01:09 #19
Den giver vist ud i rækkefølgen 40->20 og ikke 20->40. Så skal du bare flytte DESC inden for )

strSQL = "SELECT TOP 20 * FROM (SELECT TOP 40 * FROM news ORDER BY ID DESC) ORDER BY ID"

Så bliver rækkefælgen 20->40
Avatar billede brownghost Nybegynder
01. maj 2003 - 01:26 #20
noope..... må hellerer få nogle andre foreslag til det her...
Avatar billede eagleeye Praktikant
01. maj 2003 - 08:40 #21
Nej det ændre sådan set samme SQL. Jeg har fået den til at virke i Access på 10 minutter så må da være muligt.

Forslag prøv at starte med en mere simpel udgave:
strSQL = "SELECT TOP 20 * FROM (SELECT TOP 40 * FROM news)"

Hvis det ikke virker så sæt AS nytabel ind:
strSQL = "SELECT TOP 20 * FROM (SELECT TOP 40 * FROM news) AS toptabel(*)"

Hvis det ikke virker virker din føste SQL ?
Samt prøv at skrive et kolonnenavn i stedet for * hvis SQL sever er kritisk med den slags.

Så udvid SQLen med ORDER BY mm.
Avatar billede brownghost Nybegynder
05. maj 2005 - 18:08 #22
luk den
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester