I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Jeg en tabel "POINTS" med point fordelt på en masse hold. Når jeg nu får de tal frem som eks. har en holdID=137 så får jeg en DSum på alle de point der står i tabellen pointdatabasen. Dvs. der står: 5 1552 10 1552 -150 1552 - 50 1552
Hvad gør jeg lige forkert. Min SQL ser således ud:
SELECT holdspillere.holdID, Sum(points.point) AS SumOfpoint, points.rundeNr, DSum("[points.point]","POINTS") AS PointTotal FROM holdspillere INNER JOIN points ON holdspillere.spillerID = points.spillerID GROUP BY holdspillere.holdID, points.rundeNr HAVING (((holdspillere.holdID)=137)) ORDER BY points.rundeNr;
Din DSum laver en sammentælling på alle point, da den ikke har et kriterie. Det bliver vist: DSum("[points.point]","POINTS","holdid=" +holdspillere.holdid) Men der det samme som du har i sum(points.point), så ...
Når jeg kører SQL´en så kommer der ikke tal i DSum:
SELECT holdspillere.holdID, Sum(points.point) AS SumOfpoint, points.rundeNr, DSum("[Point]","POINTS","[HoldId]=137 And [RundeNr]=" & [RundeNr]) AS PointTotal FROM holdspillere INNER JOIN points ON holdspillere.spillerID = points.spillerID GROUP BY holdspillere.holdID, points.rundeNr HAVING (((holdspillere.holdID)=137));
SELECT holdspillere.Holdid, Sum(points.point) AS SumOfpoint, points.rundenr, (select sum(Point) from points P1 inner join holdspillere HS1 ON P1.spillerID=HS1.spillerID where p1.rundenr<=points.rundenr and HS1.holdID=holdspillere.holdid) AS PointTotal FROM holdspillere INNER JOIN points ON holdspillere.spillerid = points.spillerid GROUP BY holdspillere.Holdid, points.rundenr ORDER BY points.rundenr;
DSum er skiftet ud med en sub-select. Ellers skal du lave et view som indeholder holdspillere og points, og bruge dsum overfor den.
For et hold bliver det: SELECT holdspillere.Holdid, Sum(points.point) AS SumOfpoint, points.rundenr, (select sum(Point) from points P1 inner join holdspillere HS1 ON P1.spillerID=HS1.spillerID where p1.rundenr<=points.rundenr and HS1.holdID=holdspillere.holdid) AS PointTotal FROM holdspillere INNER JOIN points ON holdspillere.spillerid = points.spillerid WHERE HoldID=137 GROUP BY holdspillere.Holdid, points.rundenr ORDER BY points.rundenr;
Min SQL-sætning virker i Access, men når jeg putter den over i ASP så kommer der fejl. SQLsætning:
SQL3 = "SELECT TOP 1 points.spillerID, points.rundeNr, points.point, Abs(DSum("[Point]","POINTS","[spillerID]=382 And [RundeNr]<=" & [RundeNr])) AS PointTotal " & _ "FROM points GROUP BY points.spillerID, points.rundeNr, points.point HAVING (((points.spillerID)=382)) " & _ "ORDER BY Abs(DSum("[Point]","POINTS","[spillerID]=382 And [RundeNr]<=" & [RundeNr])) DESC;"
Fejlmeddelse: Der opstod en Microsoft VBScript-kompileringsfejl (0x800A0401) Slut på sætning var ventet /test1/www/sl/se_spillerinfo.asp, line 58, column 79 Det er anførselstegnene den brokker sig over...hvad skal jeg gøre???
Det bliver vist: SQL3 = "SELECT TOP 1 points.spillerID, points.rundeNr, points.point, Abs(DSum('[Point]','POINTS','[spillerID]=382 And [RundeNr]<=' & [RundeNr])) AS PointTotal " & _ "FROM points GROUP BY points.spillerID, points.rundeNr, points.point HAVING (((points.spillerID)=382)) " & _ "ORDER BY Abs(DSum('[Point]','POINTS','[spillerID]=382 And [RundeNr]<=' & [RundeNr])) DESC;"
mortrr> kanon...tak for det, så virker DSum på spillerID, men har stadig problem med min holdID. TIl holdID ser min SQL sådan ud:
SELECT holdspillere.holdID, Sum(points.point) AS SumOfpoint, points.rundeNr, DSum("[Point]","POINTS","[HoldId]=137 And [RundeNr]<=" & [RundeNr]) AS PointTotal FROM holdspillere INNER JOIN points ON holdspillere.spillerID = points.spillerID GROUP BY holdspillere.holdID, points.rundeNr HAVING (((holdspillere.holdID)=137));
Der bliver brugt disse tabeller: HOLDSPILLERE: holdID, spillerID POINT: autonum, spillerID, rundenr, point, dato
Har du nogle guldkorn du kan ryste ud af ærmet ;-)
Du kan ikke bruge DSum med udvælgelse udfra et felt der ikke er i din hovedforespørgsel (spillerID), så du er nødt til at lave den som en sub-select, eller oprette et view som indeholder felterne fra holdspillere og point.
okay, men når jeg bruger den sidste SQl fra 21/03-2003 11:33:27 så vises point fordelt på runder på det pågældende hold. Der laves jo ingen summering. Og det er den jeg skal bruge.
Hvis du kun skal bruge summering på holdet, så forstår jeg ikke helt hvorfor du var ude efter en summering pr runde.
Sum pr hold er bare: SELECT holdspillere.Holdid, Sum(points.point) AS SumOfpoint FROM holdspillere INNER JOIN points ON holdspillere.spillerid = points.spillerid GROUP BY holdspillere.Holdid;
Denne SQL udregner jo bare Ialt point for dette hold. Det som jeg skal bruger er som jeg skrev i indlægget at den summere: 5 5 10 15 -150 -135 -50 -185
SELECT holdspillere.Holdid, points.rundenr, Sum(points.point) AS SumOfpoint, (select sum(Point) from points P1 inner join holdspillere HS1 ON P1.spillerID=HS1.spillerID where p1.rundenr<=points.rundenr and HS1.holdID=holdspillere.holdid) AS PointTotal FROM holdspillere INNER JOIN points ON holdspillere.spillerid = points.spillerid GROUP BY holdspillere.Holdid, points.rundenr ORDER BY points.rundenr;
Jeg prøvede lige at lave et par tabeller som svarer til dine, og den returnerer faktisk det rigtige
Hvis du vil have den for et hold så: SELECT holdspillere.Holdid, points.rundenr, Sum(points.point) AS SumOfpoint, (select sum(Point) from points P1 inner join holdspillere HS1 ON P1.spillerID=HS1.spillerID where p1.rundenr<=points.rundenr and HS1.holdID=holdspillere.holdid) AS PointTotal FROM holdspillere INNER JOIN points ON holdspillere.spillerid = points.spillerid GROUP BY holdspillere.Holdid, points.rundenr WHERE HoldID=137 ORDER BY points.rundenr;
og endnu en gang sludder. Where skal selvfølgelig før group by, så: SELECT holdspillere.Holdid, points.rundenr, Sum(points.point) AS SumOfpoint, (select sum(Point) from points P1 inner join holdspillere HS1 ON P1.spillerID=HS1.spillerID where p1.rundenr<=points.rundenr and HS1.holdID=holdspillere.holdid) AS PointTotal FROM holdspillere INNER JOIN points ON holdspillere.spillerid = points.spillerid WHERE HoldID=137 GROUP BY holdspillere.Holdid, points.rundenr ORDER BY points.rundenr;
mortrr> lav lige et svar...for du rykker da for vildt. Tusind tak skal du have...du har simpelt reddet min dag. Havde ikke set at der var en PointTotal (det er jo det sorte der er bogstaverne).
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.