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

时间:2018-11-28 19:03:00

标签: php mysql

我与数据库的连接工作正常,因此仅包含代码。我想做的是创建一个特定项目花费的总时间。我现在拥有的代码现在显示注释,该注释包含项目更新最后一天的所有注释:

library(tidyverse)
df1 %>% 
  mutate(leaf_grade = strsplit(leaf_grade, '-') %>%
                          map( ~ as.numeric(.x) %>%
                                 reduce(`:`))) %>% 
  unnest

这是它在网页上的显示方式:

Click to see image of what is displayed on web page

我拥有的“测试”代码将增加总工作时间:

$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";

这是它在网页上的显示方式。请注意,除当天的第一个注释外,所有其他注释均已消失。 Click to see image of what is display on web page

我尝试调整查询的顺序,但是它将向我发送错误并破坏代码。我一直无法找到解决方案,我将不胜感激。我在使用PHP方面不是很先进,因此我的方法很奇怪,我正在使用其他人的代码构建代码。任何建议都会有所帮助!

谢谢。

1 个答案:

答案 0 :(得分:0)

我建议第二个脚本的主要问题是,您试图对要返回一行的列求和,在SQL中,当它是SELECT中的唯一列时,您只能返回SUM()。

下面的内容应该可以解决这个问题,并且通过使用联接也可以提高效率(我假设updates.request_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;