2013-07-11 46 views
0

有一個名爲user_transaction表已結構如下:如何爲給定的場景創建一個SQL查詢?

transaction_id mediumint(6) UNSIGNED (PK) 
transaction_no varchar(55) 
transaction_cc_avenue_no varchar(55) 
transaction_card_category varchar(100) 
transaction_user_id  varchar(32) 
transaction_user_name varchar(255) 
transaction_user_email_id varchar(255) 
transaction_deal_code varchar(10) 
transaction_dc_id smallint(4) 
transaction_amount float(10,2) 
transaction_discount float(10,2) 
transaction_total_amount float(10,2) 
transaction_data_assign enum('0', '1') 
transaction_status enum('success', 'inprocess', 'fail', 'cancelled')  
transaction_date bigint(12) 
transaction_update_date bigint(12) 
transaction_update_user_id varchar(32) 

我使用UNIX時間戳值的字段transaction_datetransaction_update_date存儲日期。 現在我的問題是,我以格式dd/mm/yyyy從PHP表單中獲取今天的日期(11/07/2013)。 獲得此日期後,我想找出今天下列計數(即2013年11月7日)只有:

total count of all the transactions carried out, 
total count of all the transactions having transaction_status as 'success', 
total count of all the transactions having transaction_status as 'inprocess', 
total count of all the transactions having transaction_status as 'fail', 
total count of all the transactions having transaction_status as 'cancelled' 

也需要同樣輸出兩個日期(兩個日期的範圍內包括首尾兩日)。 我是這個UNIX時間戳操作的新手。 任何人都可以在這方面幫助我嗎? 在此先感謝。

+0

[你嘗試過什麼?( http://whathaveyoutried.com) –

+0

@ X.L.Ant:我應該發佈我在問題主體中嘗試過的SQL查詢嗎? – PHPLover

+1

是的請發佈查詢 – DevZer0

回答

2
SELECT COUNT(*) `carried out`, 
     SUM(transaction_status = 'success') `success`, 
     SUM(transaction_status = 'inprocess') `inprocess`, 
     SUM(transaction_status = 'fail') `fail`, 
     SUM(transaction_status = 'cancelled') `cancelled` 
FROM tableName 
-- WHERE add your conditions here 

既然你想從今天的唯一日期,所有記錄,從transaction_date 假設你可以在UNIX日期轉換爲日期,如

WHERE FROM_UNIXTIME(transaction_date) >= CURDATE() AND 
     FROM_UNIXTIME(transaction_date) < CURDATE() + INTERVAL 1 DAY 
+0

非常感謝你的幫助。這適用於我的要求。如果我說兩個日期說(2013年6月1日和2013年6月30日),你能否給我提供WHERE條件? – PHPLover

+0

'WHERE FROM_UNIXTIME(transaction_date)BETWEEN'2013-06-01'AND'2013-06-30'' –

+0

:謝謝你的第二個答案。但是我的日期格式與您在答案中提到的格式不同。那我該如何利用這個查詢呢?我應該編寫一個PHP邏輯來更改日期的格式,然後在查詢中使用嗎? – PHPLover

1

過濾掉今天的交易,你可以使用其中date(NOW())==日期(TRANSACTION_DATE) 或剛剛創建從一個2013年11月7日2個日期轉換配對

11/07/2013 00:00:00 - 11/07/2013 23:59:59