簡體   English   中英

MySQL獲取最新日期,相關的最新插入

[英]MySQL Get latest date where dependant latest insert

我有兩個要合並在一起的查詢,因此不必一個接一個地執行,因為在某些情況下,我想更改輸出順序。

第一個查詢,獲取發票狀態。 它會更改以保留日志,但是在99%的時間內,我只需要檢查最新條目即可。 布局如下:

provider_invoice_status_ID,providers_invoice_summary_ID,status_ID,userinfo_ID,providers_invoice_status_date

SELECT providers_invoice_summary_ID
  FROM db_providers_invoice_status
 WHERE status_ID = '$status'
 ORDER BY providers_invoice_status_date DESC

然后根據上述查詢的結果查詢發票表。 布局如下。

provider_invoice_summary_ID,providers_invoice_summary_file,providers_invoice_summary_total,providers_invoice_summary_due,providers_invoice_summary_genic

    SELECT si.providers_invoice_summary_ID
     , providers_invoice_summary_file
     , providers_invoice_summary_total
     , providers_invoice_summary_due
     , providers_invoice_summary_generated
  FROM db_providers_invoice_summary si 
 WHERE providers_invoice_summary_ID = '$invoice_ID';

可能嘗試合並查詢,結果是:

SELECT si.providers_invoice_summary_ID
     , providers_invoice_summary_file
     , providers_invoice_summary_total
     , providers_invoice_summary_due
     , providers_invoice_summary_generated
     , s.status_ID 
  FROM db_providers_invoice_summary si, db_providers_invoice_status s
 WHERE status_ID = ( SELECT status_ID
                   FROM db_providers_invoice_status
                  WHERE providers_invoice_summary_ID = si.providers_invoice_summary_ID 
                    AND status_ID = 7  
                  ORDER 
                     BY providers_invoice_status_date DESC 
                  LIMIT 1)

但是,它從status_ID = 7的狀態記錄表中提取所有結果,因此不能完全獲取最新的插入內容(此后此狀態可能已更改為8,因此不希望使用invoice_ID)。 我嘗試使用ORDER BY,但是它僅對所有結果進行排序,而不是我所追求的子集。

任何幫助,將不勝感激。 希望對閱讀它的人來說這很清楚,我知道它很復雜。

編輯數據:

發票表:

providers_invoice_summary_ID providers_invoice_summary_file providers_invoice_summary_total providers_invoice_summary_due providers_invoice_summary_generated
----------------------------------------------------------------------------------------------------------------------------------------------------------
           4                |        ../blah/blah.jpg      |            245.63       |           2014-04-20               |           2014-03-14
           5                |        ../blah/blah.jpg      |            456.89       |           2014-04-20               |           2014-03-12
           6                |        ../blah/blah.jpg      |            125.36       |           2014-04-24               |           2014-03-12    

狀態表:

providers_invoice_status_ID providers_invoice_summary_ID status_ID userinfo_ID providers_invoice_Status_date
------------------------------------------------------------------------------------------------------------
               4           |              4             |   7     |      7    |   2014-03-14 10:19:41
               5           |              5             |   7     |      7    |   2014-03-12 10:22:41
               6           |              6             |   7     |      7    |   2014-03-24 10:15:38
               7           |              5             |   8     |      7    |   2014-03-26 11:15:14

我希望能從這些數據中獲得2張發票,因為目前有2張發票的最新狀態設置為7張。希望這可以進一步澄清。

這是兩個查詢的組合版本。 我創建了一個子查詢來選擇狀態與輸入狀態ID(例如7)匹配的發票。 反過來,狀態ID是使用最新狀態日期從子查詢中獲取的。

更新查詢

SELECT 
 si.providers_invoice_summary_ID
 , si.providers_invoice_summary_file
 , si.providers_invoice_summary_total
 , si.providers_invoice_summary_due
 , si.providers_invoice_summary_generated
 , invoice_status.status_ID 
FROM 
  db_providers_invoice_summary si, 
  (SELECT t1.providers_invoice_summary_ID as providers_invoice_summary_ID
      , t1.status_id as status_id
   FROM db_providers_invoice_status t1
  LEFT JOIN db_providers_invoice_status t2 ON t1.providers_invoice_summary_ID = t2.providers_invoice_summary_ID AND t1.providers_invoice_Status_date < t2.providers_invoice_Status_date
WHERE t2.providers_invoice_summary_ID IS NULL
  AND t1.status_id = 7
   ) invoice_status
WHERE SI.PROVIDERS_INVOICE_SUMMARY_ID = invoice_status.PROVIDERS_INVOICE_SUMMARY_ID

請同時查看sql小提琴以獲取演示。

參考文獻

MySQL:行包含某個列的分組最大值

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM