Avatar billede slash Nybegynder
15. juni 2000 - 08:56 Der er 16 kommentarer og
3 løsninger

SQL og limit - monster problem

Hej. Jeg sidder og roder med en søgning til en lille hjemmeside. Jeg kører NT 4.0, IIS 4.0 og SQL-server 6.5. I worst-case kan søgningen returnere 3000 sider (og det antal sider stiger stødt uge for uge). Jeg vil godt have det således at man kan se 30 resultater pr. side og kan gå frem og tilbage i ens søgeresultat. Vil godt bruge LIMIT funktionaliteten - Har læst en del om limit her på eksperten, men det er IKKE nok! Paging á la det på activeserverpages.dk er ikke løsningen.

Kan limit overhovedet bruges på en sql-server 6.5??? Og i den forbindelse; skal den "køre" på et ADODB.RecordSet" eller en "ADODB.connection"??

Min sql-sætning (er beskåret yderst meget i frustartion over bare at få det her limit til at virke): SQL = "SELECT * FROM SQL_DOKS limit "&start&",20 "

Hvad er der galt med denne sætning, der kommer en fejl der siger "Incorrect syntax near 20" --> Jeg fatter det ikke ;-((

Håber på et hurtigt svar
Avatar billede lange Nybegynder
15. juni 2000 - 09:11 #1
LIMIT findes så vidt jeg ved ikke i TransactSQL, som SQL Server (og Access) kører med.
Avatar billede sone Nybegynder
15. juni 2000 - 09:26 #2
Prøv at udskrive variablen SQL for at checke om start indeholder en gyldig værdi.
Avatar billede slash Nybegynder
15. juni 2000 - 09:33 #3
>> Sone: Jeg har prøvet at udskrive sql variablen, og den giver svaret:
SELECT * FROM SQL_DOKS limit 0, 10 --> hvis jeg bruger sql-sætningen: SQL = "SELECT * FROM SQL_DOKS limit 0,10 "

>>Lange: er ved at lede efter en SQL-reference på nettet for at verificere dit postulat! Men hvorfor virker limit i mySQL og ikke i sql-server? De må da følge den samme reference?
Avatar billede lange Nybegynder
15. juni 2000 - 09:39 #4
Nej, MySQL og SQL Server er 2 forskellige databaser - og der findes omtrent lige så mange SQL-varianter, som der findes databaser. :o/

Men kig her for en SQL-reference: http://msdn.microsoft.com/library/default.asp?URL=/library/psdk/sql/tsqlcon.htm
Avatar billede slash Nybegynder
15. juni 2000 - 09:56 #5
Har kigget på det link du gav mig; det ser ud til, at limit ikke er med i denne reference og dermed er det vel også udelukket at bruge den! Men, lader dog lige spørgsmålet stå åben lidt endnu...
Avatar billede lange Nybegynder
15. juni 2000 - 10:00 #6
Fair nok, jeg har jo heller ikke rigtigt løst dit problem :o/
Avatar billede steffen Nybegynder
15. juni 2000 - 15:13 #8
evt brug limit i 'er altså:

SQL = "SELECT * FROM SQL_DOKS limit '0,20'
Avatar billede slash Nybegynder
15. juni 2000 - 15:20 #9
>>Steffen, når jeg skriver
SQL = "Select * from sql_doks limit '0,20' " -
så kommer der en fejl --> jeg koder i asp!!!
Avatar billede slash Nybegynder
15. juni 2000 - 16:16 #10
Sidder og prøver på at finde ud af der hersens sql.... er stødt på en ting i sql som jeg også skal anvende, nemlig top. Ideen er at man skal tage den nyeste fra en given database. Syntaks: "select top 1 * from T_presseklip_punkt"

Den melder fejl --> incorrect syntaks near 1 - som om jeg fatter det :-( Kan TOP overhovedet bruges sammen med ASP og SQL-server????? og at selecte en max(id) f.eks., er ej heller en løsning idet, der skal blive trukket 5 parametre med ud i sql-sætninge´n, og disse 5 parametre bliver "sat" på et link....
Avatar billede steffen Nybegynder
15. juni 2000 - 16:41 #11
ASP eller ej - du koder stadigvæk op mod MSSQL, som alle kommandoerne er rettet mod.

Hvilken fejl får du ved '0,20'?
Avatar billede chruker Nybegynder
15. juni 2000 - 17:13 #12
slash: Det skal være SELECT TOP 1 FROM T_presseklip_punkt

I andre: Jeg læste på et tidspunkt at man kunne emulere LIMIT ved hjælp af TOP. Skal man bruge noget ligende LIMIT 30,10 (altså returner poster fra 30-39), skulle man først SELECT TOP 40 FROM bla ORDER BY <felt> ASC, og derefter på det resultat SELECT TOP 10 FROM temp_resultat ORDER BY <felt> DESC. Jeg har aldrig brugt det, men meningen er at det hele skrives i en SQL forespørgsel, som så returnere det valgte interval.
Avatar billede asp Nybegynder
15. juni 2000 - 18:09 #13
SELECT TOP Felt1 FROM ..... Kan IKKE bruges med SQL 6.5 (kom først med i 7.0).

Alt SQL kan skrives fra ASP (ASP transportere det blot videre til SQL parseren).

Det vare bare det, hej....
Avatar billede asp Nybegynder
15. juni 2000 - 18:10 #14
Præcist hvad er relavant at få over 3000 resultater på?
Avatar billede slash Nybegynder
16. juni 2000 - 08:09 #15
>>steffen. Fejlen jeg får ved brug af limit er: Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

[Microsoft][ODBC SQL Server Driver][SQL Server]Line 1: Incorrect syntax near '0,20'. (syntaks jeg bruger: query = "SELECT * FROM SQL_DOKS limit '0,20'"

>>asp: jeg har også en ms sql server 7.0 kørende og der virker select top heller ikke ;-( (det der med de 3000 resultater, der er når man ønsker at foretage en global søgning i databasen).


Avatar billede asp Nybegynder
18. juni 2000 - 15:45 #16
slash: Når du ikke kan lave SELECT TOP fra SQL 7.0 er det fordi dine filer er i kompatibel tilstand med 6.5, se løsningen:

Make sure your database is in 7.0 Compatibility mode. The TOP command will
only work in 7.0 mode. Run sp_dbcmptlevel [mydb] to find out what mode your
database is in. To change it to 7.0, run sp_dbcmptlevel [mydb],'70'.

Jeg syntes stadig det er vildt med 3000 resultater, det er da totalt umuligt at overskue, syntes du ikke?

Mvh.

Dennis
Avatar billede asp Nybegynder
18. juni 2000 - 15:45 #17
Sorry, skulle have været kommentar.. :)
Avatar billede slash Nybegynder
19. juni 2000 - 10:50 #18
>>asp: de 3000 resultater der vil  fremkomme er i og for sig lette at overskue på skærmen, idet der kun vises 30 pr. "skærm" - dog anvender jeg paging, hvilket sænker performance, jeg ville godt have have brugt limit, som jo skulle øge performance. Jge har spekuleret på at udregne tidskompleksiteten ved de forskellige søgninger, men det er vist overkill, for hvor mange vil reelt søge på alt? Men muligheden skal bare være tilstede. Har prøvet at køre den stored procedure du foreslog, og min db var i 6.5 mode på 7.0 serveren.... forresten, så skal jeg til at opgradere 6.5 serveren til 7.0. Har du erfaring med dette? Hvis ja, er der nogle ting man skal lægge mærke til/tage højde for?? (har ca. 100 tabeller, 10 stored procedures, 20-30 brugere og en masse permissions på forskellige objekter).
Avatar billede slash Nybegynder
22. juni 2000 - 07:53 #19
Vist nok på tide at lukke spørgsmålet. I har alle 3 hjulpet mig på vejen til at løse mine problemstillinger derfor har jeg valgt at give jer alle point - det er vel OK med alle!
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