簡體   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