Avatar billede voller Nybegynder
07. februar 2004 - 22:52 Der er 4 kommentarer

SQL problem - Division med nul

Hej Access-eksperter.



Jeg har en noget lang SQL-forespørgsel i min Access XP database:
SELECT tblImages.ImgID, tblImages.ImgTitle, Round(tblImages.ImgRating/tblImages.NumberOfVotes,2) AS Rating, Count(tblComments.CommentID) AS NumberOfComments
FROM tblImages LEFT JOIN tblComments ON tblImages.ImgID =
tblComments.ImgReferID
GROUP BY tblImages.ImgID, tblImages.ImgTitle, Round(tblImages.ImgRating/tblImages.NumberOfVotes,2)
ORDER BY tblImages.ImgID;

Se, problemet er, at hvis tblImages.NumberOfVotes er lig med tallet nul, så virker sætningen ikke, da man kommer til at dividere med nul. Problemet kunne løses ved at indsætte "WHERE tblImages.NumberOfVotes > 0" i ovenstående sætning, men det er ikke ønskværdigt, da jeg gerne vil have alle poster med, uanset om tblImages.NumberOfVotes er lig med nul eller ej. Kan man med SQL lave en slags funktion, der...
1. Hvis NumberOfVotes er over nul, udfører divisionen og sætter Rating lig resultatet.
2. Hvis NumberOfVotes er lig med nul, ikke udfører divisionen, men bare sætter rating lig tallet nul?

Jeg bruger ovenståenede SQL sammen med en ASP.NET side.



Mvh. Voller.
Avatar billede erikjacobsen Ekspert
07. februar 2004 - 23:00 #1
Lav test for 0 og beregning i dit scriptsprog.
Avatar billede voller Nybegynder
07. februar 2004 - 23:10 #2
Det er naturligvis en mulighed, men det ville efter min mening være smart at få det hele ordnet på en gang i SQL/Access? Det er måske ikke muligt?
Avatar billede erikjacobsen Ekspert
07. februar 2004 - 23:18 #3
Jeg synes man skal adskille tingene. Brug databasen til data, og dit
programmeringssprog til beregninger.

Det er sikkert muligt i SQL, men efter min mening ikke hensigtsmæssigt.
Avatar billede proaccess Nybegynder
08. februar 2004 - 07:48 #4
Hvis det skulle gøre i Access, så prøv med:

SELECT I.ImgID, I.ImgTitle, IIf(I.NumberOfVotes > 0, Round(I.ImgRating/I.NumberOfVotes, 2), 0) AS Rating, Count(C.CommentID) AS NumberOfComments
FROM tblImages AS I LEFT JOIN tblComments AS C ON I.ImgID = C.ImgReferID
GROUP BY I.ImgID, I.ImgTitle, IIf(I.NumberOfVotes > 0, Round(I.ImgRating/I.NumberOfVotes, 2), 0)
ORDER BY I.ImgID;
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
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

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