2012-11-29 31 views
0

請參閱db表格圖像。MYSQL:用戶ID的計數類型

enter image description here

我想算爲每個用戶ID值 'Q' 型。無論我寫的是正確與否,我都感到困惑。

"SELECT COUNT(type),userid FROM '$db_prefix'posts WHERE type=Q GROUP BY userid"; 

那麼,它會顯示Q的總數爲X的用戶ID象下面這樣:

userid 1 has 25 Q 
userid 2 has 11 Q 
.... 

同樣的方式爲A和C,但是我想如果我會得到對於Q比,將工作中對於A和C也是如此。

+1

聽起來對我是正確的;任何錯誤?結果是什麼? – Cynical

+0

它提供'注意:使用未定義的常量類型 - 假定'類型' –

回答

2

實際上,您可以通過單個查詢獲取每種類型的數據。像這樣:

SELECT type, userid, COUNT(*) AS `n` FROM posts GROUP BY type, userid; 

此查詢將具有相同值的BOTH類型和userid的那些行分組。

回聲聲明:

echo $q['userid'] .' has '. $q['n'] $q['type'] .' question';

+0

未加引號的標識符不能包含'''字符。 – eggyal

+0

你明白了。 我會編輯它,但查詢看起來不整齊,因爲引號中的字符串常量。 –

+0

給出錯誤'注意:使用未定義的常量類型 - 假定'type'' –

1
"SELECT userid, type, COUNT(*) 
FROM {$db_prefix}posts 
GROUP BY userid, type" 
+0

未加引號的標識符不能包含'''字符。 – eggyal

+0

你說得對。糾正。 –

+1

這仍然沒有引用:你只是把整個查詢放在一個字符串中。如果表名確實包含'''字符,則需要使用反引號引用標識符。但我懷疑這只是對高級語言語法的誤解;例如,如果它是PHP,OP可能只需要'{$ db_prefix}文章'。 – eggyal

3

該查詢確定:

select count(type), userid 
from posts 
where type='Q' 
group by userid 

你忘了引號的'** Q *'

這個查詢做所有這封信一舉成名。

select userid, type, count(*) as count 
from posts 
group by userid, type 
+0

所以我錯了嗎?我是否使用錯誤的代碼輸出? 'echo $ q ['userid']。'具有 '。 $ q ['type']。'問題';' –

+0

@pixelngrain:這取決於你對'$ q'的定義... – eggyal

+0

是的你是對的...我得到了結果..感謝你的幫助.. +1給你.. –