15. juni 2000 - 08:56Der 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 ;-((
>> 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?
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...
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....
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.
>>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).
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?
>>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).
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!
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.