2012-07-27 87 views
0

我寫了一個SQL查詢,我必須使用CodeIgniter。 我的查詢是: -查詢CodeIgniter

SELECT COUNT('user_id') FROM tbl_tickets_replies WHERE user_id IN (SELECT id from tbl_users WHERE username IN (SELECT username FROM tbl_tickets WHERE site_referers_id =1)) 

我做這在我的模型

function getCommentNumbers() { 
    $sql = "SELECT COUNT('user_id') FROM tbl_tickets_replies WHERE user_id IN (SELECT id from tbl_users WHERE username IN (SELECT username FROM tbl_tickets WHERE site_referers_id =1))"; 
    return $this->db->query($sql); 
} 

如何可以做到這一點使用的活動記錄

它不工作:(

我有三種不同的表格是: -

tbl_users(id,username); 
tbl_tickets(id,username,site_referers_id) 
tbl_tickets_replies(id,user_id,comments) 

我想要做的是選擇屬於具有site_referers_id = 1的特定用戶名的所有評論。 我想從tbl_tickets中選擇具有site_referes_id = 1的不同用戶名,然後從tbl_users獲取所選用戶名的id,並使用該id來統計他擁有的評論數量,並根據用戶名顯示它。 MY查詢不這樣做,它即顯示所有用戶的總評價, 假設有兩個用戶A和B與用戶ID 1和2具有10個和15條評論 那麼它應該顯示像:

A 10 
B 15 

,而我的查詢顯示

A 
B 25 
+0

'SELECT COUNT( 'USER_ID')'沒有做什麼,你認爲它。您的意思是「SELECT COUNT(DISTINCT user_id)」或「SELECT COUNT(*)」,具體取決於您嘗試執行的操作。 – 2012-07-27 09:40:24

+0

@MarkByers:我編輯了我的問題sir – avinashse 2012-07-27 10:03:16

+0

Codeigniter的AR不支持子查詢,所以你不能用AR做它沒有任何竅門。 – uzsolt 2012-07-27 11:24:26

回答

1

什麼你缺少的是GROUP BY聚合函數。

試試這個:

SELECT DISTINCT user_id, COUNT('user_id') FROM tbl_tickets_replies WHERE user_id IN 
    (SELECT id from tbl_users WHERE username IN 
     (SELECT username FROM tbl_tickets WHERE site_referers_id =1)) GROUP BY user_id 
+0

謝謝,你能幫我寫下它使用活動記錄codeigniter – avinashse 2012-07-27 10:27:31

+0

http://stackoverflow.com/questions/656622/codeigniter-how-to-do-a-select-distinct-fieldname-mysql-query看到這個問題的更多細節,但我認爲你應該執行一個純粹的mysql查詢。 Codeigniter在解析複雜的mysql查詢時有點懶。 – bogtan 2012-07-27 10:32:48