Jeg har følgende kode: $sql_red = "SELECT t1.player_teamid, Sum(t1.type * 0.5) AS totalred, t2.holdnavn FROM bookings AS t1, tilmelding AS t2 WHERE t1.player_teamid = t2.teamid AND t1.type = '2' AND t1.season = $season_active GROUP BY player_teamid ORDER BY totalred DESC LIMIT 2"; $result_red = mysql_query($sql_red) or die(mysql_error()); while($row_red = mysql_fetch_array($result_red)){; ?> <tr> <td><?=$row_red['holdnavn']?></td> <td class="stilling" align="center"><? printf("%d", $row_red['totalred']);?></td> </tr> <tr> <?php } ?>
I bookings table har jeg 2 hold som har bookings med type=2, det ene hold har 3 entries med type= 2, og det andet hold har 1 entry med type=2.
Men min query returnerer: Flying Ducks 6 Team Jimbo 1
Hvilket i stedet skulle være: Flying Ducks 3 <------- Team Jimbo 1
jeg ganger jo med 0.5 i min Sum(t1.type * 0.5)
Hvad er problemet her?
Kan man ikke køre sum() på t1.type INDEN man har sat t1.type= '2' ??
SQL-forespørgsel: SELECT t1.player_teamid, Sum( t1.type ) AS totalred, t2.holdnavn FROM bookings AS t1, tilmelding AS t2 WHERE t1.player_teamid = t2.teamid AND t1.type = '2' AND t1.season =29 GROUP BY t1.player_teamid ORDER BY totalred DESC LIMIT 2
Giver: player_teamid totalred holdnavn 928659 12 Flying Ducks 930812 2 Team Jimbo
Det er jo helt sort! Den nederste på 2 er god nok, da Team Jimbo har 1 rødt kort, men Flying Ducks har 3 røde kort - hvordan kan den summe 3*2 til 12??
Her er lige et breakdown, da jeg ikke er kommet videre:
I min tabel "tilmelding" har jeg de enkelte hold flere gange, men med forskellige season_tilmeld (den jeg skal bruge er season_tilmeld=29).
I min bookings har jeg type= 1 eller 2 (1=gult kort, 2=rødt kort)
Jeg har player_teamid i bookings, og teamid i tilmelding som skal joines før jeg kan trække holdnavnet ud fra min tilmelding tabel.
Men det går galt når jeg forsøger at joine dem - nogle der er hardcore til join funktioner som kan forklare mig hvad jeg gør galt, og hvordan det skal gøres i stedet?
$sql_red = "SELECT t1.player_teamid, COUNT(t1.type) AS totalred, t2.holdnavn FROM bookings AS t1, tilmelding AS t2 WHERE t2.season_tilmeld = 29 AND t1.player_teamid = t2.teamid AND t1.type = '2' AND t1.season = $season_active GROUP BY t1.player_teamid ORDER BY totalred DESC LIMIT 2";
manglede at sætte min condition t2.season_tilmeld = 29, og nu "Counter" jeg bare felter hvor type=2 i stedet.. virker også mere logisk.
Synes godt om
Ny brugerNybegynder
Din løsning...
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.