簡體   English   中英

如何檢查表中是否已有名稱? 查詢Mysql每天的總和,然后通過PHP填充HTML數據

[英]How to check if name already in the table? Querying Mysql for sum of each day and then populating an HTML data through PHP with it

所以,這是我的第一個問題,如果有人能幫助我,我真的很感激。 我目前有一個Mysql數據庫和一個用PHP制作的網絡應用程序,用戶可以輸入他們當天在特定任務上使用了多少時間。

現在我想用幾小時填充每天活動的SUM的HTML表格。 我的問題是我找不到檢查名稱字段是否唯一的方法,因為數據包含許多具有相同名稱字段的行,每天一個。

我有這個Mysql查詢:

SELECT 
    t_email.name, 
    DATE_FORMAT(input_date,'%d') AS days, 
    SUM(time_worked) AS totalTime
FROM 
    t_transactions 
    LEFT JOIN t_email ON t_transactions.email_id >= t_email.email_id 
WHERE 
    DATE_FORMAT(input_date,'%m') = '02'
    AND DATE_FORMAT(input_date,'%Y') = '2019' 
GROUP BY DATE_FORMAT(input_date,'%d') 
ORDER BY t_email.name

這給我一個像這樣的表:

name  days  totalTime
james 01    5.00 
james 06    2.00 
jimmy 02    4.0

等等。 我正在使用以下PHP:

<?php 
foreach ($monthly_data_per_day as $row): ?>
<tr>
    <td><?= $row['name'] ?></td>
    <?php
    $num_days = date('t');
    for ($i = 1; $i <= $num_days; $i++) {
        if ($row['days'] == $i) {
            echo "<td>" . $row['totalTime'] . "</td>";
        } else {
            echo "<td>" . 0 . "</td>";
        }
    }?></tr>
<?php endforeach;?>

我想要一個HTML表格,在數據庫中的每個名字之后,你可以看到那個人當天完成了多少小時。 所以列中從1到本月有多少天。

現在我每天都會得到一行,正確的時間總和就在一列上,因為每列有一行。

這是我想要的表格的圖片:

桌子的圖片與每月的每一天的列

有一個解決方案使用條件聚合...這將要求您編寫31個CASE語句,如:

SELECT 
    e.name, 
    SUM(CASE WHEN DAYOFMONTH(t.input_date) = 1 THEN t.time_worked ELSE 0 END) AS day1,
    SUM(CASE WHEN DAYOFMONTH(t.input_date) = 2 THEN t.time_worked ELSE 0 END) AS day2,
    SUM(CASE WHEN DAYOFMONTH(t.input_date) = 3 THEN t.time_worked ELSE 0 END) AS day3,
    ...
FROM 
    t_transactions t
    LEFT JOIN t_email e ON t.email_id = e.email_id 
WHERE YEAR(input_date) = 2019 AND MONTH(t.input_date) = 2
GROUP BY e.name
ORDER BY e.name

其他評論:

  • 我猜你的意思是t.email_id = e.email_id而不是t.email_id >= e.email_id

  • 使用MySQL內置日期函數(例如YEARDAYOFMONTHMONTH )返回整數可能更有效,而不是操縱日期的格式化字符串表示

  • 由於查詢中的所有字段都不是別名,我假設列input_datetime_worked屬於表t_transactions

  • 因為我們SELECT e.name ,所以此列需要出現在GROUP BY子句中; 在非古代版本的MySQL上,這是一個語法錯誤

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM