Avatar billede loopstudio Nybegynder
04. april 2004 - 23:02 Der er 11 kommentarer og
1 løsning

Kan nogen oversætte flg. AccessSQL til mySQL?

Her er hele SQL-sætningen (som stammer fra MS Access) som jeg skal have oversat til mySQL (4.0):

SELECT TOP 10 tabel1.tID, MAX(tabel1.dato) AS MaksOfdato1, LAST(tabel1.procent) AS SidsteOfprocent, tabel2.ID, tabel3.sidstePos, tabel3.sidsteDato, tabel3.antalDage FROM (tabel1 INNER JOIN tabel3 ON tabel1.tID = tabel3.ID) INNER JOIN tabel2 ON tabel3.pID = tabel2.ID WHERE NOT tabel3.slettet GROUP BY tabel1.tID,  tabel2.ID, tabel3.sidstePos, tabel3.sidsteDato, tabel3.antalDage ORDER BY LAST(tabel1.procent) DESC, tabel3.antalDage DESC;
Avatar billede arne_v Ekspert
04. april 2004 - 23:04 #1
Jeg tror at du skal have ændret 2 ting:

1) SELECT TOP 10 ...  ->  SELECT ... LIMIT 10

2) Have erstattet LAST med noget som jeg ikke ved hvad
Avatar billede loopstudio Nybegynder
04. april 2004 - 23:17 #2
Ja, og så skal jeg ha oversat MAX til noget som jeg ikke helt ved hvordan.. for det kan ikke lade sig gøre i mySQL 4, først i 4.1 er der vidst åbnet op for noget med MAX, men ikke helt på samme facon. 4.1 er desværre kun i alfa udgave og jeg er ikke engang sikker på at jeg opnår det helt samme...
Avatar billede arne_v Ekspert
04. april 2004 - 23:20 #3
MAX er der.
Avatar billede arne_v Ekspert
04. april 2004 - 23:21 #4
Helt tilbage i version 3 !
Avatar billede loopstudio Nybegynder
04. april 2004 - 23:26 #5
hmm.. hvorfor fejler den så omkring ordet MAX i version 4?
Avatar billede loopstudio Nybegynder
04. april 2004 - 23:29 #6
Den kommer med flg. fejl:

Microsoft OLE DB Provider for ODBC Drivers error '80040e09'
[TCX][MyODBC]You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '10 tabel1.tID, MAX(tabel1.dato) AS Mak
Avatar billede arne_v Ekspert
04. april 2004 - 23:30 #7
Prøv og lav rettelse #1
Avatar billede loopstudio Nybegynder
04. april 2004 - 23:41 #8
Hov, det hjalp faktisk lidt at jeg ændrede TOP til LIMIT! ;o) Tak skal du have...

Nu siger den så:

Microsoft OLE DB Provider for ODBC Drivers error '80040e09'
[TCX][MyODBC]You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '(tabel1.procent) AS SidsteOfprocent, 

Dvs. det er nok LAST'en den brokker sig over..
Avatar billede arne_v Ekspert
04. april 2004 - 23:49 #9
Jeg er bange for at du bliver nødt til at flytte den logik fra MySQL
til applikation.

D.v.s. først lave en query som finder de sidste værdier og så en query
uden hvir din applikation bare bruger værdierne fundet i første query.
Avatar billede arne_v Ekspert
12. april 2004 - 20:16 #10
OK ?
Avatar billede loopstudio Nybegynder
13. april 2004 - 15:46 #11
hvordan finder jeg de sidste, hvis LAST funktionen ikke virker?

kan du eventuelt lave et eksempel? Jeg vil gerne give flere point hvis jeg opnår en løsning som kan nøjagtigt det samme som i mit Access SQL udtryk! ;o)
Avatar billede loopstudio Nybegynder
28. marts 2007 - 16:39 #12
jeg har nu fundet løsning vha subquery
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
Computerworld tilbyder specialiserede kurser i database-management

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