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.
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;
Synes godt om
Ny brugerNybegynder
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.