14. december 2007 - 23:59Der er
12 kommentarer og 1 løsning
Kun få et produkt return én gang
Har følgende :" SELECT FoodInfo.FoodId, FoodNutr.SrOr, FoodNutr.DanName FROM (FoodInfo INNER JOIN FoodNutr ON FoodInfo.FoodId = FoodNutr.FoodId AND FoodInfo.FoodId = FoodNutr.FoodId) WHERE (FoodInfo.MainGrp = ?) ORDER BY FoodNutr.DanName "
For så vidt godt nok... Problemet er, at der er en masse varer, der har samme navn (FoodNutr.DanName) .. vil kun have vist dem en enkelt gang..
(hvor jeg så skal have lavet noget gennemsnit af FoodNutr.SrOr, der indeholder forskellige decimal tal, for hver gang FoodNutr.DanName går igen (det er ikke et unikt produkt) )...
Nogen der lige kan hjælpe med at gennemskue de to problemstillinger :) ?
Teknologi, AI og forretning er i centrum på Computerworlds Cloud og AI Festival i København d. 18. og 19. september. Se hele programmet for den store konference om strategisk brug af Cloud og AI på: www.cloud-festival.dk
SELECT DISTINCT FoodInfo.FoodId, FoodNutr.SrOr, FoodNutr.DanName FROM (FoodInfo INNER JOIN FoodNutr ON FoodInfo.FoodId = FoodNutr.FoodId AND FoodInfo.FoodId = FoodNutr.FoodId) WHERE (FoodInfo.MainGrp = ?) ORDER BY FoodNutr.DanName
og
SELECT AVG(FoodNutr.SrOr) AS AvgSrOr, FoodNutr.DanName FROM (FoodInfo INNER JOIN FoodNutr ON FoodInfo.FoodId = FoodNutr.FoodId AND FoodInfo.FoodId = FoodNutr.FoodId) WHERE (FoodInfo.MainGrp = ?) GROUP BY FoodNutr.DanName ORDER BY FoodNutr.DanName
Ja det var jo også sådan jeg skulle mene, det skulle være :)
Dog kommer Produkteter med samme navn dog fortsat i en lind strøm.. så ændrede desværre ikke rigtig noget.. vil lige prøve at lege med din avarage løsning :d
Må vist hellere lige prøve at formulere det klarere.
Altså har en masse produkter, der har samme navn. Ønsker kun vist de, der har samme navn, én gang. De produkter, der havde samme navn, har dog forskellige værdier. Så derfor har jeg brug for gennemsnittet af de produkters FoodNutr.SrOr, der har samme navn(ikke for samtlige produkter)...
You tried to execute a query that does not include the specified expression 'FoodId' as part of an aggregate function. .. hvad menes der mon, foodid skal jo heller ikke være en del af udregningen .. ?
ligger i en access database pt.. men er det muligt at oprette en stored prodedure der kan beregne gennemsnittet af FoodNutr.SrOr where foodnuts.danname = foodinfo.danname.. eller kan det også flettes ind i overstående sql ?
Hej, når jeg prøver at bruge den, virker det ikke længere og kommer med den tidligere nævnte fejl med :"You tried to execute a query that does not include the specified expression 'FoodId' as part of an aggregate function."..
Ser sådan ud.. men kan ikke lige se, hvordan den skal vide, at den kun skal tage avarage på de produkter, der har samme navn og ikke samtlige ?
SELECT DISTINCT FoodInfo.DanName, AVG(FoodNutr.SrOr) AS AvgSrOr, FoodInfo.FoodId FROM (FoodInfo) WHERE (FoodInfo.MainGrp = ?) GROUP BY FoodInfo.DanName ORDER BY FoodInfo.DanName
####Hvis du vælger at selecte FoodId så skal den med i GROUP BY listen.####
Altså:
SELECT DISTINCT FoodInfo.DanName, AVG(FoodNutr.SrOr) AS AvgSrOr, FoodInfo.FoodId FROM (FoodInfo) WHERE (FoodInfo.MainGrp = ?) GROUP BY FoodInfo.DanName,FoodInfo.FoodId ORDER BY FoodInfo.DanName
KANON :D :D (jeg skal vist lige have læst op på hvad det group by går ud på :) )
Gider du smide et svar :)
Jeg forstår dog stadig ikke, hvordan den skal vide, at den skal tage gennemsnittet af de varer, der har samme navn, og ikke samtlige varer :) .. Har det noget med group by at gøre ? men super, virker !!
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.