1

恐れ入りますが、また戻ってきてください!

私はこの SQL クエリを持っています - テーブルにデータを入力します。

echo SQLResultTable("SELECT SalesExec, COUNT(SalesExec)AS 'Total<br/> Checks', $AverageScore, `SUM(Autofails) AS 'Total <br/>AutoFails', $AverageAutofails FROM Data_Table WHERE BranchManager = '$BM'");`

データベースには、現在 3 つのレコードがあります。営業担当者 A の場合は 2、営業担当者 2 の場合は 1 です。

上記の出力フォームは、テーブルに 1 つの行を生成しています。Sales Exec1 の名前だけで。ただし、他のすべてのフィールドは合計/平均などであり、3 つのすべてのレコードの値です。

そのSales Execに関連するレコードに適用される平均/カウント/合計などを使用して、必要な適切な2行をテーブルに生成するにはどうすればよいですか?

テーブルを機能させるために、別のサイトからこの関数を引っ掛けましたが、この問題以外はうまく機能しているようです。

function SQLResultTable($Query)
{
    $host = "localhost";
$user = "root";
$pass = "";
$db = "Quality_Monitoring";
    $link = mysql_connect($host, $user, $pass) or die('Could not connect: ' . mysql_error());      //build MySQL Link
    mysql_select_db($db) or die('Could not select database');        //select database
    $Table = "";  //initialize table variable

    $Table.= "<table border='1' style=\"border-collapse: collapse; text-align: center; font-size: small; cellspacing: 5px; \">"; //Open HTML Table

    $Result = mysql_query($Query); //Execute the query
    if(mysql_error())
    {
        $Table.= "<tr><td>MySQL ERROR: " . mysql_error() . "</td></tr>";
    }
    else
    {
        //Header Row with Field Names
        $NumFields = mysql_num_fields($Result);
        $Table.= "<tr style=\"background-color: #000066; text-align: center; color: #FFFFFF;\">";
        for ($i=0; $i < $NumFields; $i++)
        {     
            $Table.= "<th>" . mysql_field_name($Result, $i) . "</th>"; 
        }
        $Table.= "</tr>";

        //Loop thru results
        $RowCt = 0; //Row Counter
        while($Row = mysql_fetch_assoc($Result))
        {
            //Alternate colors for rows
            if($RowCt++ % 2 == 0) $Style = "background-color: #00CCCC;";
            else $Style = "background-color: #CCCCCC;";

            $Table.= "<tr style=\"$Style\">";
            //Loop thru each field
            foreach($Row as $field => $value)
            {
                $Table.= "<td>$value</td>";
            }
            $Table.= "</tr>";
        }
       // $Table.= "<tr style=\"background-color: #000066; color: #FFFFFF;\"><td colspan='$NumFields'>Query Returned " . mysql_num_rows($Result) . " records</td></tr>";
    }
    $Table.= "</table>";

    return $Table;

}

?>

どんな助けでも大歓迎です、乾杯!

4

1 に答える 1

1

SQL ステートメントは集計関数を使用しますCOUNT(), SUM()が、 はありませんGROUP BYGROUP BY SalesExec. MySQL は句の存在と内容について寛容であるためGROUP BY、おそらく最初の を含む 1 つの行を返しますが、すべてSalesExecのに対して集計が計算され、意味のある結果ではありません。 SalesExec

echo SQLResultTable("
  SELECT SalesExec, COUNT(SalesExec)AS 'Total<br/> Checks', $AverageScore, `SUM(Autofails) AS 'Total <br/>AutoFails', $AverageAutofails 
  FROM Data_Table 
  WHERE BranchManager = '$BM' 
  GROUP BY SalesExec
");`
于 2012-08-07T13:03:07.697 に答える