Avatar billede challengers Nybegynder
24. februar 2003 - 10:05 Der er 13 kommentarer og
1 løsning

Konvertering fra Access til MySql

Jeg har konverteret en Access-2000 database til MySql 4.0. Jeg har udført konverteringen med MySql Front

Der er en del SQL-sætninger, der virker ikke Access, men som ikke virker i MySql. Her er en af dem:

SELECT Value, Time FROM proddata WHERE CodeID = 1020 AND Value IS NOT NULL AND (Time BETWEEN 1045468800) AND (1045468800-518400)) ORDER BY Time ASC;

Hvorfor virker denne sætning ikke i MySql? Er Time et reserveret ord? Felttypen på Time er INT(11). Time fungerer godt nok i andre SQL-sætninger - bare ikke i denne...
Avatar billede challengers Nybegynder
24. februar 2003 - 10:23 #1
Jeg har lige opdaget at der er en ekstra højre-parantes i SQL-sætningen, men det er ikke det der er problemet. Det løser heller ikke problemet, hvis jeg ændrer Time til Tid. Der kommer ingen fejl. Men søgningen giver heller ingen poster...

Hjææææælp!
Avatar billede ahv Nybegynder
24. februar 2003 - 10:37 #2
Hvad siger den til:

SELECT Value, Time FROM proddata WHERE CodeID = 1020 AND Value IS NOT NULL AND Time<'1045468800' AND time>'1045468800-518400' ORDER BY Time ASC;
Avatar billede challengers Nybegynder
24. februar 2003 - 10:40 #3
Der kommer stadig ingen poster ud af forespørgslen...
Avatar billede ahv Nybegynder
24. februar 2003 - 10:43 #4
Kan jeg få lov at se lidt mere af din kode?
Avatar billede challengers Nybegynder
24. februar 2003 - 10:55 #5
Her er det sted, hvor SQL-sætninger opbygges. De sendes som et string-array til en metode, der tegner grafer ud fra dem:

strings[0] = "SELECT Value, Time FROM ProdData_" + houseid + "_" + batchno + " WHERE CodeID = 1020 AND Value IS NOT NULL AND (Time BETWEEN '" + thistime + "' AND '" + thistime + "-" + ((3600*4)* 6 * graphdays) + "') ORDER BY Time ASC;";

strings[1] = "SELECT Value, Time FROM ProdData_" + houseid + "_" + batchno + " WHERE CodeID = 1021 AND Value IS NOT NULL AND (Time BETWEEN '" + thistime + "' AND '" + thistime + "-" + ((3600*4)* 6 * graphdays) + "') ORDER BY Time ASC;";

Håber - det er til at få noget ud af....
Avatar billede challengers Nybegynder
24. februar 2003 - 11:02 #6
Nu virker det med <= og >= i stedet for between ... and ...

Er der nogen, der kan forklare hvorfor between ... and ... virker fint i nogle tilfælde men ikke i andre?
Avatar billede ahv Nybegynder
24. februar 2003 - 11:57 #7
Jeg ved ikke om between er korrekt at bruge i mysql.
Men eftersom det virker, vi ldu så have jeg ligger et svar igen eller?
Avatar billede challengers Nybegynder
24. februar 2003 - 12:06 #8
Jeg mener da så sandelig at "between and" er anerkendt!
Avatar billede ahv Nybegynder
24. februar 2003 - 12:23 #9
Hvis du vil prøve at få det til at virke med between har du så prøvet:

strings[0] = "SELECT Value, Time FROM ProdData_" + houseid + "_" + batchno + " WHERE CodeID = 1020 AND Value IS NOT NULL AND Time BETWEEN '" + thistime + "' AND '" + thistime + "-" + ((3600*4)* 6 * graphdays) + "' ORDER BY Time ASC;";

?
Avatar billede ahv Nybegynder
24. februar 2003 - 12:43 #10
Hvorfor den virker og ikke virker? hmm måske er det fordi at resultatet ligger uden for dit time valg, i de tilfælde den ikke virker?
Avatar billede challengers Nybegynder
24. februar 2003 - 12:45 #11
Det er det ikke. SQL-sætningen giver de korrekte poster i en Access version af den samme database!
Avatar billede challengers Nybegynder
24. februar 2003 - 12:53 #12
Har jeg prøvet. Virker heller ikke
Avatar billede ahv Nybegynder
24. februar 2003 - 13:00 #13
Du har vel også en ligegyldig parantes:

strings[1] = "SELECT Value, Time FROM ProdData_" + houseid + "_" + batchno + " WHERE CodeID = 1021 AND Value IS NOT NULL AND (Time BETWEEN '" + thistime + "' AND '" + thistime + "-" + (3600*4*6*graphdays) + "') ORDER BY Time ASC;";

Den er fjernet her, om det løser det ved jeg ikke, men den er helt overflødig da du alligevel multiplicere alle tallene.
Avatar billede challengers Nybegynder
08. august 2003 - 08:38 #14
lukker spm
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