Foreach用php和mysql

时间:2014-01-27 16:58:30

标签: php mysql

我有以下代码,根据Resultat_ID设置的内容,提供行的 profit 结果。

$result = mysql_query('SELECT Indsats, Odds, Resultat_ID, Kamp FROM spil'); 
$row = mysql_fetch_assoc($result);
echo " Gevinster: "; 
$Indsats = $row['Indsats'];
$Odds = str_replace(",", ".", $row['Odds']);
$sum = 0;

while($row = mysql_fetch_array( $result ))
{
    $Indsats = $row['Indsats'];
    $Odds = str_replace(",", ".", $row['Odds']);
    if ($row['Resultat_ID'] == 1)      //Win
    {
       $sum += $Indsats * ($Odds-1);
    }
    elseif ($row['Resultat_ID'] == 2)  //Loss
    {
       $sum += $Indsats * -1;
    }
    elseif ($row['Resultat_ID'] == 3)  //HalfWin
    {
       $sum += $Indsats * ($Odds-1) * 0.5;
    }
    elseif ($row['Resultat_ID'] == 4)  //HalfLoose
    {
       $sum += $Indsats * -0.5;
    }
}

echo $sum;

我还有一个名为Tipper_ID的列,其中包含每个自卸车的编号以及包含Tipper_IDTipper_Name的表格。

除了上面的总 profit 结果之外,我想得到每个自卸车的 profit 结果,所以基本上运行上面的部分为“all”和每个{{在Tipper表中1}}并获得每个部分的 profit 结果。

我该怎么做?

丹麦语/英语Translations

Tipper_Name

2 个答案:

答案 0 :(得分:0)

您有两个选择:

  1. 在你的同时,为每个结果执行另一个查询(取决于结果的数量,性能可能不是那么好)
  2. 创建一个VIEW,其结果按Tipper_Name(或您需要的任何内容)分组,并使用刚刚创建的VIEW更改您的查询,添加INNER JOIN。即使这个解决方案稍微复杂一点,它也会更快!

答案 1 :(得分:0)

这实际上看起来像是一个经典的SQL问题:

SELECT   t.TIPPER_ID, t.TIPPER_NAME, 
         SUM(CASE(s.Resultat_ID WHEN 1 THEN Indsats*(Odds-1) ELSE 0 END)) AS Win,
         SUM(CASE(s.Resultat_ID WHEN 2 THEN Indsats*(-1) ELSE 0 END)) AS Loss,
         SUM(CASE(s.Resultat_ID WHEN 3 THEN Indsats*(Odds-1)*(0.5) ELSE 0 END)) AS HalfWin,
         SUM(CASE(s.Resultat_ID WHEN 4 THEN Indsats*(-0.5) ELSE 0 END)) AS HalfLoss

FROM         spil AS s 
LEFT JOIN    TIPPERS AS t ON t.TIPPER_ID=s.TIPPER_ID

GROUP BY     s.TIPPER_ID

总的来说,你应该在php中添加它们。