0

CodeIgniterを使用して実行する必要のある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))

私は自分のモデルでこれを行っています

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);
}

アクティブなレコードを使用してこれを行う方法

動いていない :(

私は3つの異なるテーブルを持っています:-

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

私がやりたいのは、site_referers_id=1を持つ特定のユーザー名に属するすべてのコメントを選択することです。site_referes_id = 1のtbl_ticketsから個別のユーザー名を選択し、tbl_usersから選択したユーザー名のIDを取得し、そのIDを使用してコメントの数をカウントし、ユーザー名に従って表示することを考えました。私のクエリはそうしていません。すべてのユーザーの合計コメントを表示しています。つまり、ユーザーID 1と2に10と15のコメントがある2人のユーザーAとBがいるとすると、次のように表示されます。

A   10
B   15

むしろ私のクエリが表示されています

A
B  25
4

1 に答える 1

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
于 2012-07-27T10:21:53.460 に答える