Почему мой запрос возвращает одну и ту же строку несколько раз? - PullRequest
0 голосов
/ 22 августа 2011

Я пытаюсь объединить две таблицы, которые имеют общий идентификатор, и он продолжает возвращать одну строку несколько раз.Я работаю с codeigniter

Это функция из модели:

function get_latest_pheeds() {
    $data = $this->user_keywords($this->ion_auth->user_id);
    $keyword = $data;
    $user_id = $this->ion_auth->user_id;
    foreach($keyword as $key => $word) {
        $q = "SELECT *,COUNT(pheed_comments.comment_id) as comments
              FROM pheeds
              LEFT JOIN pheed_comments ON pheed_comments.P_id=pheeds.pheed_id
              WHERE pheed LIKE '%$word%' OR user_id='$user_id'
              ORDER BY datetime DESC";
        $result = $this->db->query($q);
        $rows[] = $result->result();
    }
    return $rows;
}

Мой запрос неверен?

1 Ответ

5 голосов
/ 22 августа 2011

Вам не хватает GROUP BY для вашего COUNT()

            $q = "SELECT *,COUNT(pheed_comments.comment_id) as comments
            FROM pheeds
            LEFT JOIN pheed_comments ON pheed_comments.P_id=pheeds.pheed_id
            WHERE pheed LIKE '%$word%' OR user_id='$user_id'
            GROUP BY pheed_id, pheed
            ORDER BY datetime DESC";

Теперь, так как вы используете SELECT *, может быть больше столбцов, возвращенных с COUNT(). Для получения точных результатов вы также должны перечислить их в GROUP BY:

GROUP BY pheed_id, pheed, othercol1, othercol2, othercol3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...