在不破坏其他代码的情况下使用

xriantvc  于 2021-06-17  发布在  Mysql
关注(0)|答案(1)|浏览(359)

我的数据库连接工作正常,所以我将只包括代码。我要做的是创建一个特定项目上花费的总小时数的总和。我现在拥有的代码显示了项目更新最后一天的所有注解:

$query = "SELECT id, date,(select username from users where id = u.user_id) as     user, (select description from requests where id = u.request_id) as request, notes, hours from updates u where u.request_id=$rid and date(date) = (select max(date(date)) from updates where request_id = $rid) order by (select description from requests where id = u.request_id) asc";

这是它在网页上的显示方式:
单击以查看网页上显示的内容的图像
我拥有的“测试”代码将添加总小时数:

$query = "SELECT id, date,(select username from users where id = u.user_id) as user, (select description from requests where id = u.request_id) as request, notes, SUM(hours) as clienthours, hours from updates u where u.request_id=$rid and date(date) = (select max(date(date)) from updates where request_id = $rid) order by (select description from requests where id = u.request_id) asc

这就是它在网页上的显示方式。请注意,除当天的第一条评论外,其他所有评论都已消失。单击以查看网页上显示的内容的图像
我试图调整查询的顺序,但它会给我发送错误并破坏代码。我还没有找到解决办法,如果能得到任何帮助,我将不胜感激。我不是很先进,当谈到php,所以我的方法是奇怪的,我是建立在别人的代码。任何建议都会有帮助!
谢谢您。

rwqw0loc

rwqw0loc1#

我建议您的第二个脚本的主要问题是,您试图对返回一行的列求和,在sql中,当它是select中唯一的列时,您只能返回sum()。
下面的内容应该可以解决这个问题,并且通过使用连接对您来说会更有效(我假设updates.request\u id是唯一的主键)

SELECT up.id, up.date, us.username, description, notes,
 (SELECT SUM(Hours) FROM updates z WHERE z.request_id = up.request_id)
FROM updates up
INNER JOIN requests r ON u.request_id = r.id
INNER JOIN users us ON up.user_id = us.id
WHERE up.request_id = $rid AND
up.date = (SELECT MAX(date) FROM updates WHERE request_id = $rid)
ORDER BY r.description ASC;

相关问题