1

MySQLのレポート作成に問題があります。主な目的は、ユーザーごとにすべてのタスクを選択し、すべてのユーザーごとに time_to_complete と time_passed の合計の差を計算することです

1 まず、U はすべての DISTINCT 名をリストしました

SELECT DISTINCT 
initial
FROM atm_name_initials

結果はこちら => http://sqlfiddle.com/#!2/f6cbe/1

2 次に、atm_name_initials で見つけた名前ごとに、このクエリを実行して、そのユーザーに関する情報を取得する必要があります

SELECT
task_given_to,
SUM(time_to_complete) AS sum_time_to_complete,
SUM(time_passed) AS sum_time_passed,
SUM(time_to_complete) - SUM(time_passed) AS sum_differance
FROM atm_tasks_dit
WHERE 
completed_percent = 100 AND
task_given_to = 'OS'

結果はこちら => http://sqlfiddle.com/#!2/f6cbe/2

問題1

なぜそれらの番号が表示されるのか理解できません。0.1 + 0.3 = 0.4、0.34545455 ではなく ... または何でも

問題2

最初の選択を2番目の選択にリンクするにはどうすればよいですか.PHPでは次のようになります

$result = mysql_query("
SELECT DISTINCT 
initial
FROM atm_name_initials
;") or die("An unexpected error has occur!");

while($row = mysql_fetch_assoc($result))
{
    $NameInitial = $row['initial'];

    $result2 = mysql_query("
    SELECT
    task_given_to,
    SUM(time_to_complete) AS sum_time_to_complete,
    SUM(time_passed) AS sum_time_passed,
    SUM(time_to_complete) - SUM(time_passed) AS sum_differance
    FROM atm_tasks_dit
    WHERE 
    completed_percent = 100 AND
    task_given_to = '".$NameInitial."'
    ;") or die("An unexpected error has occur!");

    while($row2 = mysql_fetch_assoc($result2))
    {
        echo $row['task_given_to']."<br/>";
        echo $row['sum_time_to_complete']."<br/>";
        echo $row['sum_time_passed']."<br/>";
        echo $row['sum_differance']."<br/>";
    }
}

しかし、お願いします、もう PHP はやめてください。本当の意味で SQL を学びたいのです。

両方のソリューションが必要です

SOLUTION 1
手続きをする(スタイリッシュモード)

解決策 2
1 つの単一クエリで、別の SELECT などで SELECT を実行しますが、プロシージャは使用しません

すべての助けに感謝します。どうもありがとうございました!

4

1 に答える 1

2

両方のステートメントを非常に簡単に組み合わせることができます。

select task_given_to,
       sum(time_to_complete) as sum_time_to_complete,
       sum(time_passed) as sum_time_passed,
       sum(time_to_complete) - sum(time_passed) as sum_differance
from atm_tasks_dit
where completed_percent = 100
and   task_given_to in (select initial 
                        from atm_name_initials)
group by task_given_to

問題1に関して:それは浮動小数点演算がコンピューターでどのように機能するかです。正確な数値が必要な場合は、を使用する必要がありますnumeric

SQLFiddleを参照してください:http ://sqlfiddle.com/#!2 / ba3b9 / 8

于 2012-08-09T10:01:06.557 に答える