小弟遇到一個問題,
我有個頁面需要計算訂單筆數,依照帳號去看日,周,月,年.
畫面大約顯示
帳號 日 週 月 年
從資料庫撈出 帳號今日筆數 帳號這週筆數 帳號今月筆數 帳號今年筆數
不過帳號有51個
51*4 = 204
所以一個畫面要撈204次
有什麼方法可以比較簡單.
我的方法土法煉鋼
寫4個 function
去跑 日 週 月 年
是否有比較好的方法
chingfeng提到:
撈的資料次數非常多
chingfeng提到:
望不要用到我的function不然感覺撈的資料次數非常
chingfeng提到:
51*4 = 204
所以一個畫面要撈204次
每日:SELECT ACNT, COUNT(ACNT) FROM TABLE WHERE PODATE IS TODAY GROUP BY ACNT 每週:SELECT ACNT, COUNT(ACNT) FROM TABLE WHERE PODATE IN THIS WEEK GROUP BY ACNT 每月:SELECT ACNT, COUNT(ACNT) FROM TABLE WHERE PODATE IN THIS MONTH GROUP BY ACNT 每年:SELECT ACNT, COUNT(ACNT) FROM TABLE WHERE PODATE IN THIS YEAR GROUP BY ACNT
MySQL 的單一 query 解法:
<pre class="c" name="code">select 帳號,
sum(if (日期=CURDATE(),1,0)) as 日,
sum(if (WEEK(日期)=WEEK(CURDATE()),1,0)) as 週,
sum(if (MONTH(日期)=MONTH(CURDATE()),1,0)) as 月,
count(帳號) as 年
from TABLE
group by 帳號
記得把帳號
跟日期
設一個索引:
ALTER TABLE 資料表名稱
ADD INDEX (帳號, 日期);
贊
只是 [沒有交易資料] 的就進不來了 ?
albertachen提到:
只是 [沒有交易資料] 的就進不來了 ?
謝謝阿伯大指教。
資料不全的問題,當然就只有資料不全的答案。
如果樓主不懂 join 的話,他會再發問的不是嗎?
讚
wise guy 這一招真利害
SELECT b.Value,b.Name,
SUM( CASE WHEN DATE_TRUNC('DAY', o.DateOrdered) =DATE_TRUNC('DAY', NOW()) THEN 1 ELSE 0 END) AS 本日,
SUM( CASE WHEN DATE_TRUNC('WEEK', o.DateOrdered) =DATE_TRUNC('WEEK',NOW()) THEN 1 ELSE 0 END) AS 本周,
SUM( CASE WHEN DATE_TRUNC('MONTH',o.DateOrdered) =DATE_TRUNC('MONTH',NOW()) THEN 1 ELSE 0 END) AS 本月,
SUM( CASE WHEN DATE_TRUNC('YEAR', o.DateOrdered) =DATE_TRUNC('YEAR',NOW()) THEN 1 ELSE 0 END) AS 本年
FROM C_BPartner b
LEFT OUTER JOIN C_Order o ON b.C_BPartner_ID=o.C_BPartner_ID
GROUP BY b.Value,b.Name
感謝 wiseguy大大指導,
這個可以使用,繼續研究一下SQL(比較弱),
用CodeIgniter開發習慣了,SQL太少使用了
回不去了
SELECT Value,Name,
(SELECT COUNT(*) FROM C_Order o WHERE o.C_BPartner_ID=b.C_BPartner_ID AND DATE_TRUNC('DAY',o.DateOrdered)=DATE_TRUNC('DAY',NOW())) AS 本日,
(SELECT COUNT(*) FROM C_Order o WHERE o.C_BPartner_ID=b.C_BPartner_ID AND DATE_TRUNC('WEEK',o.DateOrdered)=DATE_TRUNC('WEEK',NOW())) AS 本周,
(SELECT COUNT(*) FROM C_Order o WHERE o.C_BPartner_ID=b.C_BPartner_ID AND DATE_TRUNC('MONTH',o.DateOrdered)=DATE_TRUNC('MONTH',NOW())) AS 本月,
(SELECT COUNT(*) FROM C_Order o WHERE o.C_BPartner_ID=b.C_BPartner_ID AND DATE_TRUNC('YEAR',o.DateOrdered)=DATE_TRUNC('YEAR',NOW())) AS 本年
FROM C_BPartner b
很多人
公司都不是給很好訓練
就土法煉鋼
因此
技術還是需要技術轉移顧問
金係太猛了,阿伯大一定也時常在週末衝頂喔..喔..喔...
感謝
泰大 蒞臨指導
謝謝阿伯大,我禮拜一在研究,非上班時間就是休閒~~!
阿伯大的 SQL 明明就藏了五個 query 在裡頭 ...
這是開放原碼
常[讀]開放源碼 ERP
讓你站在巨人肩膀 [看更遠] 防止商業軟體版權控告
chingfeng提到:
謝謝阿伯大,我禮拜一在研究,非上班時間就是休閒~
我們是東京墨爾本上班時間就開始上班
我們是美西美東都已下班才能下班
....
現在
美東客戶才下班
美西客戶還有人在上班
你太好命了
albertachen提到:
我們是東京墨爾本上班時間就開始上班
我們是美西美東都已下班才能下班
....
現在
美東客戶才下班
美西客戶還有人在上班
你太好命了
阿伯大是在7-11上班?? 提供7*24 online service? 這種SLA還真的只有台灣敢承諾!
單一星球7x24是小兒科,只要正三角形頂點有分身即可,阿不然共和國怎麼開星際會議...
albertachen提到:
你太好命了
一開始條件談好就好了,對於我來說工作是上班時間的事情,下班就是要享受生活!!
而且下班有時候也有些小案子要做
chingfeng提到:
小案子要做
所以 下班切換 [專案]
因該不算專案
小案子 : 網站 網頁 電腦重灌之類的東西
albertachen提到:
下班切換 [專案]
其實下班後的專案也有分正常與半夜那種的...
泰大不要太累了 小心肝阿
半夜的專案通常是比較靠腰的...
半夜 傷肝 傷腰 ......
有這種情況 請打080009.....