2012-07-03 48 views
0

我有以下MySQL表爲了追蹤其餘

Order table 
status 0 - incomplete 
status 1 - complete 

PO_invoice| Company| transactionType| Amt_Paid | Balance | Status| dateCreated| 
1001  | Astek |    3|  10000| 10000| 0 |2012-10-15 | 
1002  | Asrack |    2|  20000|  0| 1 |2012-10-20 | 

事務表

它包含了支付方式的解釋

  • 如果鍵入1,然後全量應在同一天支付
  • 如果類型2那麼當天的50%和
  • 30天以外50%的量應支付
  • 如果類型3,那麼在同一天和後
  • 60天其他60%的量應支付

    transactionType | noDays | PercentSplit | 
    
           1|  0 |   0 | 
           2|  30 |   50 | 
           3|  60 |   60 | 
    

60%的我試圖跟蹤付款的訂單

當前我加入交易類型和狀態的兩個表0

$query = "select Order.PO_invoice, Order.Company, Order.Amt_Paid, Order.Balance, 
      Order.dateCreated, Transaction.noDays,Transaction.PercentSplit 
      INNER JOIN Transaction 
      ON Order.transactionType = Transaction.transactionType AND 
      Order.status =0" 

和PHP循環,並檢查是否

currentTime - Order.dateCreated > = Transaction.noDays 

如果是則顯示行否則跳過該行。

我想知道是否有辦法在MYSQL中只做這些,只返回那些行。

回答

1

你嘗試 -

WHERE DATEDIFF(NOW(),Order.dateCreated) >= Transaction.noDays 
+0

+1,這會工作,但我將能夠通過該值命令,使得最大elaped時間將首先顯示。 –

+0

您是否嘗試過使用相同的順序,例如'DCEPIFF(NOW(),Order.dateCreated)' – Kshitij

+0

或者您可以使用'DATEDIFF(NOW(),Order.dateCreated)'作爲其中一列,給它一個別名,然後在'order by'中使用別名 – Kshitij