Avatar billede noerdar-dilling Nybegynder
06. december 2004 - 16:37 Der er 19 kommentarer og
1 løsning

Problemer med MAX funktion i mySql

Jeg har følgende linje



ResultSet rs5 = stmt.executeQuery("SELECT MAX(id) FROM ordre WHERE kundeid = '" + idkunde + "'");

Tabellen består af et unikt id der tælles op automatik, samt et kolonne der hedder kundeid. Der kan godt være det samme kundeid i mange af rækkerne, men jeg ønsker at finde det største unikke id for en bestemt kunde. Men istedet skriver den det største kundeid. Fatter det ikke.
Avatar billede tofte Juniormester
06. december 2004 - 16:41 #1
Du skal bruge
SELECT MAX(id) FROM ordre GROUP BY kundeid HAVING kundeid=3
eller
Avatar billede tofte Juniormester
06. december 2004 - 16:42 #2
eller lige rette 3 til så der kommer til at stå idkunde, eller hvad du kalder feltet :-)
Avatar billede noerdar-dilling Nybegynder
06. december 2004 - 16:45 #3
ok prøver lige ok
Avatar billede noerdar-dilling Nybegynder
06. december 2004 - 16:49 #4
ok jeg får en fejl der siger at Colum not found message from server: Unknown colum 'kundeid' in having clause'"
Avatar billede tofte Juniormester
06. december 2004 - 16:50 #5
bruger du php er lign?
Avatar billede noerdar-dilling Nybegynder
06. december 2004 - 16:51 #6
ja bruger java servlets
Avatar billede tofte Juniormester
06. december 2004 - 16:52 #7
kan det ikke tænkes at kundeid er kommet inden for '' så databasen tror det er et af dens felter?
Avatar billede tofte Juniormester
06. december 2004 - 16:53 #8
hmm, havde ikke lige set at feltet hed det samme som parametern
Avatar billede noerdar-dilling Nybegynder
06. december 2004 - 16:58 #9
jo men hvordan retter jeg det??
Avatar billede tofte Juniormester
06. december 2004 - 17:01 #10
det er mig som sover. Prøv
SELECT MAX(id),kundeid FROM ordre GROUP BY kundeid HAVING kundeid=3
Avatar billede noerdar-dilling Nybegynder
06. december 2004 - 17:15 #11
Det virker ikke den skriver stadig det største tal i kundeid og ikke det største id for den aktuelle kunde.

ResultSet rs5 = stmt.executeQuery("SELECT MAX(id),kundeid FROM ordre GROUP BY kundeid HAVING kundeid = '" + idkunde + "'");
Avatar billede tofte Juniormester
06. december 2004 - 17:17 #12
Hvis du skriver

ResultSet rs5 = stmt.executeQuery("SELECT MAX(id) as mid,kundeid FROM ordre GROUP BY kundeid HAVING kundeid = '" + idkunde + "'");

så burde du kunne tilgå den via dit dataset og feltnavnet mid.
Avatar billede noerdar-dilling Nybegynder
06. december 2004 - 17:17 #13
Det er mærkeligt syntes jeg
Avatar billede noerdar-dilling Nybegynder
06. december 2004 - 17:21 #14
Hvordan mener du at jeg skal tilgå det, notmal skriver jeg jo
String ordreId;
ordreId = rs3.getString(1);
System.err.println(ordreId); Skriver det id jeg leder efter
Avatar billede tofte Juniormester
06. december 2004 - 17:29 #15
jeg ved ikke noget om servlets men burde MAX(id) ikke ligge på 0 og ikke på 1
Avatar billede opgavecenter Nybegynder
06. december 2004 - 19:13 #16
:)
Avatar billede arne_v Ekspert
06. december 2004 - 19:30 #17
Nej - JDBC nummerer fra 1
Avatar billede arne_v Ekspert
06. december 2004 - 20:19 #18
GROUP BY kundeid

burde gøre at MAX(id) blev max. for hver kunde id
Avatar billede arne_v Ekspert
06. december 2004 - 20:20 #19
Og lige for en god ordens skyld: du skal ikke bruge det til at fiske en
auto increment værdi ud efter en insert vel ?

For så er det nemlig den forkerte måde - der skal du bruge SELECT LAST_INSERT_ID()
eller stmt.getGeneratedKeys()
Avatar billede noerdar-dilling Nybegynder
13. december 2004 - 17:48 #20
har ordnet det selv
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