AlamartimoMedlem sedan okt. 2004129 inlägg
Har suttit några timmar igår med det här problemet och vet inte hur jag ska lösa det riktigt.
Cal = "SELECT MFName, MLName, Team, LapTime, SUM(LapTime) AS LSUM, COUNT(*) AS antal FROM Race
GROUP BY ManagerID ORDER BY LSUM"
Jag loopar igenom tabellen och räknar ihop tider som summa (LapTime) Grupperat på ManagerID men jag vill även kunna
visa den senaste (Laptime) som kommit in i tabellen Grupperat på ManagerID.
Någon som ser vad jag ska göra?
Använder MySQL 4.0.21
Tack på förhand.. :)
Engine^Medlem sedan dec. 20002 861 inlägg
Antingen har du en datetimekolumn i vilken du anger när LapTime sattes eller så använder du dig av en räknare (dock får du då "tidpunkten" för när LapTime sattes in i tabellen, d.v.s. den senaste insatta LapTime).
LarsGMedlem sedan dec. 200012 465 inlägg
AlamartimoMedlem sedan okt. 2004129 inlägg
Okej.. jag ska försöka mig på det igen :)
Grejen är den att 22 LapTime sätts samtidigt av 22 olika användare (spelare) via en kod som genererar LapTime automatiskt var 60'e sekund.
På sidan där resultatet ska visas så sorteras sen de 22 spelarna med hjälp av totalsumman av LapTime men jag får inte sidan att visa den senaste LapTime som samtliga 22 spelare gjorde..
Jag tror du hängde med där redan innan.. :h
Men i alla fall.. Jag försöker så får vi se..
Engine^Medlem sedan dec. 20002 861 inlägg
Hur vet du vilken LapTime som är den senaste? Du behöver en kolumn i tabellen (helst en datetime, men det går troligen med en räknare också). Om du inte har någon sådan kan du inte få ut ett senaste värde.
AlamartimoMedlem sedan okt. 2004129 inlägg
Okej..
Tja jag var inne ett tag på Limit 1 DESC
Men DateTime låter ju vettigt så jag provar det.. :)
AlamartimoMedlem sedan okt. 2004129 inlägg
Har nu provat alla möjliga varianter men jag får inte till det.
Har skapat en kolumn som heter Added. Fältet är DateTime.
När en tid genereras så hamnar tiden den skapades på korrekt.
Det har jag kollat.
Cal = "SELECT MFName, MLName, Team, LapTime, Added, SUM(LapTime) AS LSUM, COUNT(*) AS antal
FROM Race GROUP BY ManagerID ORDER BY LSUM, Added DESC"
Vet inte hur jag ska få in det rätt i SELECT ovan.
Det primära är sortering efter LSUM och det blir ju rätt men sen visar den den första tiden (LapTime) som kommit in i databasen.
Någon som har en ide ?? :)
tohaMedlem sedan dec. 1999698 inlägg
Vet inte hur det är i MySql men kan du inte köra med en derived table? Så här skulle det blir i SQLServer:
SELECT
Race2.*
FROM
(
select
ManagerID,
MFName,
Team,
MAX(Added) AS Added,
SUM(Laptime) AS Summa,
COUNT(Added) AS Antal,
AVG(Laptime) AS Medel
from
Race
group by
ManagerID,
MFName,
Team
) AS Race2
ORDER BY
Summa ASC
tohaMedlem sedan dec. 1999698 inlägg
Jag missförstod nog hur du ville få ut det. Den här listar:
ManagerID, Sista laptime, Tiden för sista varvet, Summa laptime, Medevärde av laptime.
select
Race.ManagerID,
Race.Laptime AS SistaLaptime,
SistaVarv.SistaVarvAdded,
SUM(SumRace.Laptime) AS Summa,
AVG(SumRace.Laptime) AS MedelVarvtid
from
(
select
Race.ManagerID,
MAX(Race.Added) AS SistaVarvAdded
from
Race
group by
Race.ManagerID
) SistaVarv
inner join
Race
ON
Race.ManagerID = SistaVarv.ManagerID
AND
Race.Added = SistaVarv.SistaVarvAdded
inner join
Race SumRace
on
SumRace.ManagerID = Race.ManagerID
group by
Race.ManagerID,
Race.Laptime,
SistaVarv.SistaVarvAdded
Det är alltså T-SQL och jag har ingen aning om det fungerar i MySql men det kanske hjälper dig på traven.
AlamartimoMedlem sedan okt. 2004129 inlägg
Toha:
Det där med MAX(Added) AS Added låter som en bra ide att prova..
Jag har målat om ett badrum här idag så jag är helt slut men jag provar det imorgon bitti.. Säger till om jag fick rätt på det :)
AlamartimoMedlem sedan okt. 2004129 inlägg
Får inte till det med dina lösningar Toha..
Jag avvaktar lite med det här problemet då jag snubblat över PostGreSQL och tänker kolla upp om jag får några fördelar med att använda det istället för MySQL..
Använder ju tider HH.MM.SS.MS och det finns inte MS i MySQL så tja..
AlamartimoMedlem sedan okt. 2004129 inlägg
Fick inte PostGreSQL att funka bra på min burk.. Avvaktar lite med det för en ny version för Windows ska snart komma ut.
Antingen det eller så ger jag mig in i Linuz djungeln och försöker mig på det då det finns alldeles för lite info om användare av PostGreSQL i Windows miljö..
Men mitt problem kvarstår..
Har försökt idag igen med en ny SELECT sats precis innan jag ska försöka få ut värdet men lyckas inte med det heller.. ??
Tacksam för lite hjälp :r
AlamartimoMedlem sedan okt. 2004129 inlägg
Var fel på det så jag redigerar lite :e
Just nu har jag den här Select satsen:
Cal = "SELECT MFName, MLName, Team, SUM(LapTime) AS LSUM FROM Race GROUP BY ManagerID ORDER BY LSUM"
Den listar ex:
Hannu | Alamartimo | Teamet | här ska senaste varvtiden vara | Totaltiden på alla varv Hannu Alamartimo kört.
Loopar igenom rsCal
Men jag får inte ut senaste Varvtiden som hamnade i tabellen Race.
Har gjort ett Datumfält där senaste tiden för senaste varvtiden lades in.
Någon? :r
AlamartimoMedlem sedan okt. 2004129 inlägg
Var fel på det så jag redigerade lite :e
AlamartimoMedlem sedan okt. 2004129 inlägg
Jag löste problemet själv till slut :) *puuuhhh*
SELECT MFName, MLName, Team, SUM(LapTime) AS LSUM, MAX(LapTime) AS LASTLAP FROM Race GROUP BY MFName, MLName, Team ORDER BY LSUM