Avatar billede jpi Mester
12. januar 2007 - 23:14 Der er 2 kommentarer og
1 løsning

Access til MySQL

Hvordan laver man følgende Access-SQL-sætning i MySQL ?

SELECT Last(bog.ID) AS Sidstebog,.....
Avatar billede kjulius Novice
13. januar 2007 - 01:07 #1
Det kan du mig bekendt ikke, da First og Last er funktioner, som ikke forekommer i standard SQL, men er specifikke for Access. I dit tilfælde, hvor jeg går ud fra, at Id er et autonummerfelt, som kører opad hele tiden, kan du dog sikkert bruge MAX funktionen i stedet.

Men hvis du bruger Last funktionen på andre felter også for at få data fra den sidste række, som svarer til det du grupperer på, er du på den.

Hvis du f.eks. har et sætning som:

SELECT ordrenummer, LAST(varenummer) AS SidsteVarenummer, LAST(varetekst) AS SidsteVaretekst, LAST(pris) AS SidsteVarepris, SUM(liniebeløb) AS OrdreBeløb
FROM Ordrer
GROUP BY ordrenummer

kan du ikke bare erstatte Last med Max, da MAX modsat Last behandler feltet, hvor Last behandler rækken under et.

Igen, hvis tabellen har et Id nummer i fortløbende sekvens, kunne en løsningsmodel være noget a.la:

SELECT o1.ordrenummer, o2.varenummer AS SidsteVarenummer, o2.varetekst AS SidsteVaretekst, SUM(o1.liniebeløb) AS OrdreBeløb
FROM Ordrer o1
INNER JOIN Ordrer o2 ON o1.ordrenummer = o2.ordrenummer
WHERE o2.Id = (SELECT MAX(o1.Id) FROM Ordrer WHERE ordrenummer = o1.ordrenummer)
GROUP BY o1.ordrenummer, o2.varenummer, o2.varetekst

Men som du kan se, bliver det dog hurtigt lidt uoverskueligt. Det kræver desuden, at MySQL understøtter subqueries, hvilket den først gør fra version 4.1
Avatar billede jpi Mester
14. januar 2007 - 01:10 #2
Ja, det havde jeg frygtet... Men jeg er heldig for MAX, gjorde sagen denne gang. Eller er det bare at smøge ærmerne op og gå i krig med indlejrede SELECT. Jeg har MySQL 5.0, så det kan den. Men denne gang slap jeg med skrækken ;-)

Tak for hjælpen.
Kast et svar
Avatar billede kjulius Novice
15. januar 2007 - 22:59 #3
Gerne... :-)
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