2011-01-27 11 views
0

私はTrackingeventがMySQLのクエリのヘルプ - 行をカウント

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 

のように見え、私は何をする必要があることは私であるように見えるtrackingeventとリンク

2つの異なるテーブルを持っていますSHARE_FACEBOOKをすべてカウントする必要があります。 と、すべてのSHARE_TWEET と、すべてのSHARE_FLICKR と、すべてのSHARE_STATION _login 何とか:) とEMAIL_SHARE とした後、残りのデータがなければ、すべてCOPNTEST_ENTRIES は(emailSubの量(1に等しい) とidの量とそれらを組み合わせます。

だから私は、私はeventNameの BY trackingeventグループから SELECT eventNameの、COUNT(*)を使用しての最初の部分を取得することができ、ソートの

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 

のように返された配列を取得しかし、どのようにして、私は混乱していますリンクのIDの数をemailsubs = 1とCONTEST_ENTRY:BLAH DATAの数(データの変更)にします。

3つの異なるSQLクエリを実行してデータを結合する必要がありますか?あるいは、私は何とかそれらを1つに組み合わせることができますか?

+0

を求めていたものでない場合は、コメントでの質問に答える必要があります誰地球上でそれは良いDBデザインになると思った?コロンで区切られた値の代わりに(神は禁じられている) 'タイプ'の列!誰もが、悪いデザインに抱かれているのは楽しいものではないので、私はアスワーを作成し始めるでしょう:P – tobyodavies

+0

悲しいことに、私のデザインではない、データベースの管理者がそれをしました。とにかく私が明らかになって怒っているかどうかにかかわらず、私はそれを修正するのに50時間を費やしてから2時間を過ごさせるほうがコストがかかりません。 – Steven

+1

いくつかの列名を取得できますか?idの参照は何ですか?あなたが他の列に私たちに与えたIDはありません...そして、どういうわけか「それらを組み合わせる」ということはどういう意味ですか? – tobyodavies

答えて

0

これは接頭

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

を使用して、あなたに、各タイプのカウントを与える必要があり、これはあなたが、すごい