如何检查表中是否已存在名称?查询Mysql每天的总和,然后用PHP通过它填充HTML数据

如何检查表中是否已存在名称?查询Mysql每天的总和,然后用PHP通过它填充HTML数据,第1张

概述因此,这是我的第一个问题,如果有人可以帮助我,我将非常感激.我目前有一个Mysql数据库和一个用PHP制作的Web应用程序,用户可以在其中输入当天用于特定任务的时间.现在,我想以小时为单位,将每天活动的总和填充到HTML表中.我的问题是我找不到一种方法来检查名称字段是否唯一,因为数据包含许多具有相同名称字段的行,每天一行.我有这个Mysql查询:SELECT

因此,这是我的第一个问题,如果有人可以帮助我,我将非常感激.我目前有一个MysqL数据库和一个用PHP制作的Web应用程序,用户可以在其中输入当天用于特定任务的时间.

现在,我想以小时为单位,将每天活动的总和填充到HTML表中.我的问题是我找不到一种方法来检查名称字段是否唯一,因为数据包含许多具有相同名称字段的行,每天一行.

我有这个MySQL查询:

SELECT     t_email.name,DATE_FORMAT(input_date,'%d') AS days,SUM(time_worked) AS totalTimeFROM     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  totalTimejames 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到一个月中有多少天.

现在,我每天获得一行,而正确的时间总和仅作用于一列,因为每一列有一行.

这是我希望表格看起来像的图片:

A picture of the table with columns for each day of the month最佳答案有一种使用条件聚合的解决方案…将需要您编写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) = 2GROUP BY e.nameORDER BY e.name

其他说明:

>我猜你的意思是t.email_ID = e.email_ID而不是t.email_ID> = e.email_ID
>使用MysqL内置的日期函数(例如YEAR,DAYOFMONTH和MONTH)可能会更有效,该函数会返回整数,而不是 *** 作日期的格式化字符串表示形式
>由于并非查询中的所有字段都是别名,因此我假设input_date和time_worked列属于表t_transactions.
>因为我们是SELECT e.name,所以此列需要出现在GROUP BY子句中;在非古代版本的MysqL上,这是语法错误 总结

以上是内存溢出为你收集整理的如何检查表中是否已存在名称?查询Mysql每天的总和,然后用PHP通过它填充HTML数据 全部内容,希望文章能够帮你解决如何检查表中是否已存在名称?查询Mysql每天的总和,然后用PHP通过它填充HTML数据 所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1165987.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存