如果php值小于结果,则使用MySQL查询对结果求和
很抱歉提前发了一个很长的帖子如果php值小于结果,则使用MySQL查询对结果求和,php,mysql,sum,Php,Mysql,Sum,很抱歉提前发了一个很长的帖子 我有一个表单,其中用户输入一个startdate和一个enddate,结果将被发送到一个PHP文件,该文件将生成如下结果变量: PHP if(isset($_POST['user_selected_dates'])) { $invoice_startdate = $_POST['start_date']; $invoice_enddate = $_POST['end_date']; } 还有一个讨厌的MySQL查询 SELECT s.stud
我有一个表单,其中用户输入一个startdate和一个enddate,结果将被发送到一个PHP文件,该文件将生成如下结果变量:
PHP
if(isset($_POST['user_selected_dates'])) {
$invoice_startdate = $_POST['start_date'];
$invoice_enddate = $_POST['end_date'];
}
还有一个讨厌的MySQL查询
SELECT
s.student_socialnr, s.student_lastname, s.student_firstname,
cs.city_name,
c.customer_name,
scp.cpl_startdate, scp.cpl_enddate, scp.cpl_coursename, scp.cpl_pricevalue,
SUM(scpe.scpe_days) AS total_days, scp.cpl_pricevalue * SUM(scpe.scpe_days) AS total_invoice
FROM studentcourseplan scp
INNER JOIN students s ON s.student_id = scp.student_id
INNER JOIN studentcourseplanelements scpe ON scpe.scpe_cpl_id = scp.cpl_id
INNER JOIN cityselections cs ON cs.city_id = s.student_city_id
INNER JOIN customers c ON c.customer_id = s.student_customer_id
WHERE scp.cpl_startdate BETWEEN '$invoice_startdate' AND '$invoice_enddate'
GROUP BY scp.cpl_id ORDER BY s.student_lastname ASC
这将在表中输出类似的内容(使用PHPmysql\u fetch\u数组
):
现在我正在寻找一个可以执行以下操作的函数:为
$invoice\u startdate
和$invoice\u enddate
之间的天数创建一个值如果此值较小则列
总天数中的结果值
进行计算:列
价格值
*[新值的结果]并将其输出到每一行(但仅当其小于数据库中的值时…)也许可以在
MySQL
-查询中完成我非常感谢您的帮助。这是我第一个使用PHP和MySQL的网站,请耐心等待
谢谢。我相信您正在考虑使用MySQL IF()和TO_DAYS()函数的组合。比如说:
SELECT IF( TO_DAYS(DATE_DIFF('$invoice_enddate', '$invoice_startdate')) < total_days, price_value * ... ) as total_invoice
选择是否(到天(日期差异(“$invoice\u enddate”,“$invoice\u startdate”)
我通过在查询中添加以下代码解决了这个问题:
CASE WHEN SUM(scpe.scpe_days) > DATEDIFF('$invoice_enddate', '$invoice_startdate') THEN
(scp.cpl_pricevalue * DATEDIFF('$invoice_enddate', '$invoice_startdate')) ELSE SUM(scpe.scpe_days) * scp.cpl_pricevalue
END AS to_invoice
你能再解释一下吗?我认为它的方向是正确的,但我没有成功地将其放入我的查询中。我不确定在每种情况下,您希望进行什么样的精确计算,但它将是:选择IF(TO_DAYS(DATE_DIFF(“$invoice_enddate”,“$invoice_startdate”)
CASE WHEN SUM(scpe.scpe_days) > DATEDIFF('$invoice_enddate', '$invoice_startdate') THEN
(scp.cpl_pricevalue * DATEDIFF('$invoice_enddate', '$invoice_startdate')) ELSE SUM(scpe.scpe_days) * scp.cpl_pricevalue
END AS to_invoice