2011-01-27 85 views
0

我有兩個不同的表trackingevent和紐帶MySQL查詢幫助 - count行

Trackingevent看起來像

eventName|eventStamp 
SHARE_FACEBOOK|2011-01-20 14:05:40 
SHARE_TWEET|2011-01-20 14:47:57 
SHARE_FLICKR|2011-01-20 15:08:58 
SHARE_STATION_LOGIN|2011-01-20 15:09:09 
EMAIL_SHARE|2011-01-20 15:10:13 
CONTEST_ENTRY:BLAH DATA|2011-01-20 15:10:13 
CONTEST_ENTRY:BLAH DATA|2011-01-20 15:10:13 

和鏈接看起來像

id|emailSub 
6|1 
7|0 
8|1 
9|0 

而我需要做的是我需要統計所有SHARE_FACEBOOK 和所有SHARE_TWEET 以及所有SHARE_FLICKR 和所有SHARE_STATION _login 和所有的COPNTEST_ENTRIES (沒有數據的:) 和EMAIL_SHARE 並以某種方式後,其餘結合那些emailSub量(等於1) 和id的量。

所以我得到一個返回數組有點像

EMAIL_SHARE  77 
SHARE_FLICKR 9 
SHARE_FACEBOOK 105 
SHARE_STATION_LOGIN  223 
SHARE_TWEET  18 
# of ID's 
# of emailsub=1 
CONTEST_ENTERIES 550 

我可以從trackingevent集團獲得使用 SELECT eventName的,COUNT(*),它的第一部分BY eventName的 但我很困惑與如何獲得鏈接#中的ID#的emailsubs = 1和CONTEST_ENTRY:BLAH DATA(等等數據改變)的數量。

我需要做三個不同的sql查詢併合並數據嗎?或者我可以以某種方式將它們合併爲一個或?

+0

哇,誰在地球上認爲這將是一個很好的數據庫設計?冒號分開的值而不是(上帝禁止)「類型」列!無論如何,揹負不好的設計都不是好玩的事,所以我將開始起草一份專門的文章:P – tobyodavies 2011-01-27 02:38:41

回答

0

這應該使用前綴

SELECT LEFT(eventName,INSTR(CONCAT(eventName,':'),':')) as prefix, count(*) 
FROM trackingevent 
GROUP BY LEFT(eventName,INSTR(CONCAT(eventName,':'),':')) 

給您每種類型的計數你必須回答的意見問題,如果這不是你問什麼