Avatar billede dawin Nybegynder
12. december 2001 - 00:40 Der er 12 kommentarer og
1 løsning

omskriv til mysql

hvordan kan den her SQL omskrives til at køre på en mySQL?

select avg(antal) as hitrate from (select count(id) as antal ,session from log group by session)

for jer der ikke kan se det kan jeg fortælle af den tæller antallet af poster der findes med de forskellige session\'s og beregner gennemsnittet af det tal. Dvs den returnerer 1 post og kun en post med feltet \"hitrate\"

Avatar billede tmceu Praktikant
12. december 2001 - 01:15 #1
Da MySQL ikke understøtter sub-selects eller SELECT-INTO endnu, vil jeg mene at du er nødt til at lave en temporary tabel, og dele dit script op i 3 steps

1. CREATE TEMPORARY TABLE Xyz....
2. INSERT INTO Xyz... SELECT....
3. SELECT AVG(ANTAL) FROM Xyz
Avatar billede disky Nybegynder
12. december 2001 - 09:05 #2
gør som tmceu siger eller vent til V4.x begynder at understøtte subselects (lang om længe)
Avatar billede dawin Nybegynder
12. december 2001 - 09:18 #3
det skal køre på en 3.26 ... og helst ingen temp-tables.. jeg ar fået at vide at alle SQL\'s kunne omskrives hvis blot det ikke var nogle som f.eks. \"delete from table where nummer not in (select id from table2)
Avatar billede disky Nybegynder
12. december 2001 - 09:20 #4
3.26 er en ret gammel version.

Prøv med


select avg(antal) as hitrate, count(id), session from log group by session;
Avatar billede tmceu Praktikant
12. december 2001 - 09:22 #5
dawin >> det er korrekt at alle SQL\'s kan omskrives, og ovenstående er efter min mening den eneste mulige omskrivning før ver. 4.

Smut evt. en tur omkring MySQL manualen og søg på sub-select og select into, som jeg mener bekræfter mit forslag.
Avatar billede tmceu Praktikant
12. december 2001 - 09:24 #6
disky >> ??? den må du lige forklare. Hvordan vil du have at den skal returnere én værdi med det statement ?
Avatar billede dawin Nybegynder
12. december 2001 - 09:29 #7
disky : den der er forkert og vilblot returnere hver session som 1 post ... desuden så er der ikke noget der hedder \"antal\" i databasen .. så hvad ville du have den skulle tage avg af ?
Avatar billede disky Nybegynder
12. december 2001 - 09:30 #8
oh sorry, det er tidligt om morgenen :)
Avatar billede dawin Nybegynder
12. december 2001 - 09:31 #9
tmceu : well .... tror bare jeg holder mig til en rigtig DB så indtil serveren engang om 3-4år bliver opgraderet til en mySQL version der kan håndtere simple forespørgsler... damn ... men du er den eneste der er kommet med et seriøst forslag der ikke er direkte forkert ... så du får bare points\'ne
Avatar billede tmceu Praktikant
12. december 2001 - 09:39 #10
dawin >> Øhh, takker for point. Men \"ikke direkte forkert\" ? Jeg vil faktisk påstå at det er temmelig rigtigt i.f.t. hvad du ville opnå og hvad MySQL kan i nuværende version, men lad os nu ikke skændes om det :-)

P.S. Hvad er en rigtig database ?
Avatar billede disky Nybegynder
12. december 2001 - 09:41 #11
tmceu:

Oracle, Sybase, DB2 osv.

mysql er en rimelig god amatør base, med store mangler.

Dog hjælpe V4.x lidt på det.

Men indtil videre mangler man:

Stored Procedure
Triggers
Views
SubSelect

osv.
Avatar billede tmceu Praktikant
12. december 2001 - 09:51 #12
disky >> Enig med manglerne. Jeg er selv en smule reserveret med at tage MySQL i brug for alvor, men den dag den har sp og triggers vil jeg ikke vente længere. Det bliver i øvrigt sjovt at se om de kan holde den fornemme performance, når de også har implementeret de \"svære\" ting.

Jeg arbejder selv primært med SQL Server, DB2, en smule Informix og så lidt MySQL på hobbyplan.
Avatar billede disky Nybegynder
12. december 2001 - 09:53 #13
tmceu: helt enig sp og triggers er en stor mangel.
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