20. januar 2004 - 02:06Der 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.
I lang tid har samarbejdsbranchen fokuseret på at forbedre enhedsfunktioner – bedre kameraer, klarere lyd og smartere software. Men den virkelige forvandling handler ikke om funktioner.
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"
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"
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"
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
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
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!
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å.
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.