繁体   English   中英

无法将两个SQL查询合并为一个

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM