webForumDet fria alternativet

många placeringar men en summa

Databaser & SQLur Databashanterare & SQL

6 svar · 515 visningar · startad av tanten

Medlem sedan nov. 20051 596 inlägg
Frågan#1

Hur gör jag för att få ut summan hopräknad och inte uppdelad som här? Går det eller måste man göra två frågor?

SELECT placering, count( * ) AS antal, year( l.datum ) , sum( s.prisSumma )
FROM resultat s
JOIN lopp l ON l.loppID = s.loppID
WHERE typID <5 AND year( l.datum ) =2006
GROUP BY placering

MySQL 4.0.
Tacksam som vanligt :)

Medlem sedan juni 200032 969 inlägg
#2

Vad menar du att du inte vill ha det uppdelat på?
Om du vill ha totalen oberoende av placering (för jag antar att det är den uppdelningen du vill slippa?) får du antingen ställa en till SQL-fråga (eftersom du använder en så gammal version av MySQL), eller räkna ihop i script- / programkoden.

mvh

Medlem sedan nov. 20051 596 inlägg
#3

Jag misstänkte att det kunde vara så. Ja det är totalen oberoende av placering jag vill få ihop.
Hur skulle det sett ut om det var Mysql 4.1 i stället? Lite nyfiken eftersom jag har tillgång även till det på annan server.

Medlem sedan juni 200032 969 inlägg
#4

Om du istället använder 4.1, så kan du använda subqueries, och då skulle det kunna se ut så typ:

SELECT placering, count( * ) AS antal, year( l.datum ) , sum( s.prisSumma ),
(SELECT count(*) FROM resultat
<joininstruktion utan group by>) AS totalantal,
(SELECT sum(s.prisSumma) FROM resultat
<joininstruktion utan group by>) AS totalsumma,
FROM resultat s
JOIN lopp l ON l.loppID = s.loppID
WHERE typID <5 AND year( l.datum ) =2006
GROUP BY placering

Joinerna får du smälla in själv. ;)

mvh

Medlem sedan nov. 20051 596 inlägg
#5

Jag fick i hop det till slut med två frågor på 4.0 men känner mig inte riktigt klar. Vilket är det enklaste sättet att få tabellen att börja räkna om från 1:a januari 2007, med en ny rad?
Kanske enklast att visa hur det är meningen att det ska se ut. Finns lite fusk där, men principen :) resultat

Kom på att det förmodligen är fel forum för min fråga, men det var egentligen denna i första hand jag vill veta hur den ska vara
WHERE typID <5 AND year( l.datum ) =2006... tror jag :OO

Medlem sedan juni 200032 969 inlägg
#6

Om du tar bort året ur where-satsen (eller ändrar = till >=) så borde du få med data med en post per år.

Missförstår jag?

Medlem sedan nov. 20051 596 inlägg
#7

@nders skrev:

Om du tar bort året ur where-satsen (eller ändrar = till >=) så borde du få med data med en post per år.

Missförstår jag?

Nej då jag tror inte du missförstår men däremot så fungerar det inte.
Suttit snart i 7 timmar och försökt ändra både hit och dit i frågorna, men fattar inte hur jag ska få till det.
Antal placeringar blir hopräknade för alla år men summa prispengar blir rätt om jag inte har ett specifikt år att göra beräkningarna på. I mitt exempel hamnar de utanför tabellen iofs, men de finns :) som du kan se i länken jag gav tidigare.

Mina felaktiga frågor ser ut som nu

SELECT placering, count( * ) AS antal, year( l.datum )
FROM resultat s
JOIN lopp l ON l.loppID = s.loppID
WHERE typID <5 AND year( l.datum )
GROUP BY placering

--------------och

SELECT sum( prisSumma ) , year( l.datum )
FROM resultat r, starta s
JOIN lopp l ON r.loppID = l.loppID AND r.loppID = s.loppID
GROUP BY year( datum ) ASC

Någon mer fingervisning om det är i frågorna jag ska ändra?
Jag får inte ut något värde i cellerna heller om antalet placeringar är 0, vilket måste skrivas ut... :q

[1]Jag tar bort markeringen så länge... känns ju som sagt inte riktigt färdig än även om det fungerar för ett år.

129 ms totalt · 3 externa anrop · v20260731065814-full.25f56b17
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)