webForumDet fria alternativet

Hur får jag ut infon efter sumering?

7 svar · 439 visningar · startad av Skogiz

SkogizMedlem sedan feb. 200395 inlägg
#1
$data = mysql_db_query("databasen", "SELECT playerid, max(actionid) FROM matches where actionid = '$actionid' group by playerid");

      while ($rad = mysql_fetch_assoc ($data))
   {
    print "Spelare ";
    print $rad["playerid"];
    print "har gjort ";
    print $rad["max(actionid)"];
}

När jag kör koden ovan blir det bara blankt.
Om jag kör frågan

SELECT playerid, max(actionid) FROM matches where actionid = '3' group by playerid;

i querybrowser så får jag fram data...

Någon som kan hjälpa mig att få till korrekt kod

Tack på förhand

PeddaMedlem sedan juni 20006 032 inlägg
#2

Sätt ett alias på din max()

$data = mysql_db_query("databasen", "SELECT playerid, max(actionid) as summa FROM matches where actionid = '$actionid' group by playerid");
print $rad["summa"];

edit /
Jäkla bugg som slänger in smilies.

headbugMedlem sedan sep. 2006867 inlägg
#3

Jag är inte så supervass på vare sig PHP eller MySQL men jag skulle gissa att du i din associativa array inte kan ropa på fältnamnet "max (actionid)" utan att du i SQL-frågan måste använda AS och ge ditt maxvärde ett namn explicit som du sedan ska använda.

Alltså:

$data = mysql_db_query("databasen", "SELECT playerid, max(actionid) AS max_a_id FROM matches where actionid = '$actionid' group by playerid");

      while ($rad = mysql_fetch_assoc ($data))
   {
    print "Spelare ";
    print $rad["playerid"];
    print "har gjort ";
    print $rad["max_a_id"];
}

Sedan kan man ju fråga sig varför i allsin dar du vill ta ut max (actionid) när du i redan i frågan tar ut alla rader som har ett visst action-id, du vet ju redan vad max av ett unikt värde är (=sig självt).

Har du tänkt igenom ordentligt? :)

mvh

/red: såklart han pedda först :) Och dumma smileys

SkogizMedlem sedan feb. 200395 inlägg
#4

Det där funkade mycket bättre ja! Tack! (y)

Men hur blir det om jag istället för spelar-id vill ha namnet på spelaren. Jag har alla spelare i en egen tabell (players) där de får ett unikt id (det id som jag nyss sökt fram)

Är det en INNER JOIN man ska köra då men hur bör den se ut?

PeddaMedlem sedan juni 20006 032 inlägg
#5

Flyttar från PHP

headbugMedlem sedan sep. 2006867 inlägg
#6

Det stämmer att det är en join du ska göra. Under antagandet att din tabell "players" har en kolumn som heter "name" och en som heter "ID" så skriver man såhär:

$data = mysql_db_query("databasen", "SELECT p.name, max(m.actionid) AS max_a_id FROM matches m INNER JOIN players p ON p.ID = m.playerid WHERE m.actionid = '$actionid' GROUP BY m.playerid");
SkogizMedlem sedan feb. 200395 inlägg
#7

Tack headbug! :e

Funkar det att baka ihop fältnamn?
Alltså typ så här

Concat( p.surename, ' ', p.lastname ) AS fullname
headbugMedlem sedan sep. 2006867 inlägg
#8

Japp det ska det göra.

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