[英]Trouble combining Two sql queries into one
我有一个表,其中包含各个成员记录的截止日期。 每行包含四个字段:
ID | Next_Due | Next_Due_Missed | Amount
=============================================================
123 | 2010-12-05 | NULL | 41.32
456 | 2010-12-10 | 2010-12-05 | 21.44
789 | 2010-12-20 | 2010-12-10 | 39.99
ID是每个成员的唯一ID
下一个到期日-是其正常订阅期的下一个到期日
仅当收集第一轮订阅付款时出错时,才会填充Next_Due_Missed。
金额是拥有订阅的金额。
我的目标是创建一个SQL查询,以检查next_due_missed是否存在并且不为null。 如果是这样,请将该值用作“ $ date”。 如果不是,则设置$ date = next_due的值
这很容易做到,除了在正常情况下将结果按Next_Due分组外,如果结合当前的方式,将省略next_due_missed。
每个付款期间,可能有600多个记录,其next_due等于所需的日期(而10-15等于next_due_missed)。
我当前的查询是:
$stmt = $db->prepare("SELECT next_due, next_due_missed FROM table_name WHERE (next_due > CURDATE() OR next_due_missed > CURDATE()) GROUP BY next_due ASC");
但是,这仅返回next_due的结果。 省略GROUP BY子句将返回数百个结果(而我需要在此阶段进行分组)。
同样,稍后,我将需要分解这些单独的记录,并根据'next_due'和'next_due_missed'值实际创建付款记录。
有什么想法我想念的吗?
除了获取DISTINCT值外,我不确定您的GROUP BY的用途,但是如果您提供了部分查询,请不要使用它:
SELECT coalesce(next_due_missed, next_due) as EffectiveNextDue
FROM table_name
WHERE coalesce(next_due_missed, next_due) > CURDATE()
GROUP BY coalesce(next_due_missed, next_due)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.