Avatar billede prologic Nybegynder
20. januar 2004 - 02:06 Der er 16 kommentarer og
2 løsninger

ASP Access til ASP MYSQL

Jeg har tidligere brugt ASP sammen med en Access database, og er nu gået over til MYSQL.

Jeg har en kode, som jeg ikke kan hitte rundt i umiddelbart, efter at skulle bruge MYSQL Queries.

MS Access top 5, hvor den vælger de sidste 5, skal faktisk bare skiftes ud med MYSSQL's Limit. Men hvor og hvordan det hele så skal stå er op til jer hehe. Hvis i løser denne her, så gir jeg gerne en masse point.
Avatar billede prologic Nybegynder
20. januar 2004 - 02:06 #1
SQL = "select * from Messages WHERE messageID in(select top " & dist & " messageID from Messages where messageID in(select top " & frabund & " messageID from Messages where ForumID = " & ForumID & " AND InReplyTo = 0 order by Date ASC) order by Date DESC,messageID ASC) ORDER BY Date DESC,messageID ASC"
Avatar billede codebase Praktikant
20. januar 2004 - 02:41 #2
nested sql er kun med i den helt nye version af MySql..!
Avatar billede codebase Praktikant
20. januar 2004 - 02:41 #3
...where messageID in( .....
Avatar billede codebase Praktikant
20. januar 2004 - 02:44 #4
http://www.mysql.com/doc/en/Subqueries.html

..For MySQL versions prior to 4.1, most subqueries can be successfully rewritten using joins and and other methods.
Avatar billede knico Nybegynder
20. januar 2004 - 07:43 #5
Jeg går ud fra at dist og frabund er variable der afgør hvor mange records der skal medtages:

SQL = "select * from Messages WHERE messageID in (select messageID from Messages where messageID in (select messageID from Messages where ForumID = " & ForumID & " AND InReplyTo = 0 order by Date ASC limit " & frabund & " ) order by Date DESC,messageID ASC limit " & dist & " ) ORDER BY Date DESC,messageID ASC"
Avatar billede keysersoze Ekspert
20. januar 2004 - 09:50 #6
SQL = "select * from Messages WHERE messageID in(select top " & dist & " messageID from Messages where messageID in(select top " & frabund & " messageID from Messages where ForumID = " & ForumID & " AND InReplyTo = 0 order by Date ASC) order by Date DESC,messageID ASC) ORDER BY Date DESC,messageID ASC LIMIT 0,5"
Avatar billede prologic Nybegynder
21. januar 2004 - 18:19 #7
Kigger.. :)
Avatar billede prologic Nybegynder
21. januar 2004 - 18:27 #8
Keysersoze:
(Top findes ikke i Mysql efter hvad jeg ved og har hørt. Det skal lige siges jeg er begynder i mysql, deraf mit råb efter hjælp hehe)

ADODB.Recordset.1 error '80004005'

SQLState: 42000
Native Error Code: 1064
[TCX][MyODBC]You have an error in your SQL syntax near 'select top 25 messageID from Messages where messageID in(select top 26 messageID' at line 1


/secret/forum.asp, line 48


Knico: Ja, det er en del af en "funktion" jeg har lavet. Virkede med Access, så det burde i princippet bare være top, der skal skiftes ud med limit.

ADODB.Recordset.1 error '80004005'

SQLState: 42000
Native Error Code: 1064
[TCX][MyODBC]You have an error in your SQL syntax near 'select messageID from Messages where messageID in (select messageID from Message' at line 1


/secret/forum.asp, line 48
Avatar billede prologic Nybegynder
21. januar 2004 - 18:35 #9
codebase: Du bliver nødt til at skære det forholdsvis ud i pap, for jeg er ikke rigtig inde i myssql endnu. prøver og lære efterhånden :)
Avatar billede keysersoze Ekspert
21. januar 2004 - 22:59 #10
det er korrekt at TOP ikke findes i MySQL - der bruges LIMIT i stedet. Jeg havde ikke set at du også have brugt TOP i din subqueries så det er derfor mit melder fejl da der så også skal bruges LIMIT der lige så vel som i den overordnede. Men samtidig er det slet ikke sikkert du kan benytte subqueries - jeg ved ikke om MySQL er færdig med at "implementere" det eller det først er muligt i en version der endnu ikke er kommet
Avatar billede prologic Nybegynder
22. januar 2004 - 03:00 #11
Ok, men mit problem var netop at still limit rigtigt de forskellige steder.

Det er ikke muligt at "skifte ud" desværre.

Den må jeg regne lidt på.
Avatar billede keysersoze Ekspert
22. januar 2004 - 09:24 #12
nej - TOP skal bruges i startet og LIMIT til sidst - fx;

SELECT TOP 25 * FROM tabel

skal laves om til

SELECT * FROM tabel LIMIT 0,25
Avatar billede knico Nybegynder
22. januar 2004 - 16:53 #13
Kig lige på mit svar igen. Jeg har faktisk ændret/flyttet dine "Top" til "Limit".
Avatar billede prologic Nybegynder
22. januar 2004 - 17:38 #14
Keyser: Ja, det er sådan set også det jeg har skrevet da jeg oprettede spm!?
Jeg kan godt lave en standard select, men jeg har jo problemer pga. den måde denne specifikke select er bygget op. Deraf oprettelsen af spm. Se evt. knico's svar.
Han har skiftet ud, og det ser umiddelbart fint ud, men siger stadig fejl. Ved ikke hvorfor og derfor kan jeg jo ik sige om det er rigtig

Knico: Jeg ved godt du har skiftet ud, men det virker stadig ik, og har derfor skrevet en specificering af hvorfor.

Alle: Jeg er BEGYNDER! i myssql, så kommer der en fejl i jeres kode kan jeg ikke sige hvorfor, kun skrive udspecificering af fejlen!
Avatar billede knico Nybegynder
22. januar 2004 - 17:54 #15
Måske er vi så tilbage ved Codebases svar. Hvilken version af MySQL har du?
Avatar billede prologic Nybegynder
23. januar 2004 - 02:09 #16
Den tanke strejfede mig også, min version er 3.23.54.

Men som sagt er jeg ik klar over hvad nested SQL er?!
Avatar billede knico Nybegynder
23. januar 2004 - 12:55 #17
En nested query er når du har flere SELECT i samme forespørgsel. M.a.o. en SELECT af en SELECT også kaldet subselect.
Codebase har ret i at dette kun lader sig gøre i ver. 4.1 som kun er i development fase. Det er derfor du får den fejl du får med min kode. Når den støder på næste SELECT kan den ikke finde ud af det.
Din løsning må være noget med flere recordset, som du kan lave SELECT på.
Avatar billede prologic Nybegynder
23. januar 2004 - 18:06 #18
Okay.. så kan jeg komme videre :)

Tak for hjælpen.
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