Я создаю веб-приложение с помощью CodeIgniter.Несколько счетчиков в одном запросе SQL
Пользователи могут «любить» или «ненавидеть» сообщения. Эти действия хранятся в таблице под названием post_rating со следующими столбцами:
- ID
- POST_ID
- user_id
- рейтинг
Рейтинг может быть либо 0 для нейтральных, 1 для любви или 2 для ненависти.
В моей модели я вернулся некоторой базовой информацией для каждой записи с помощью следующей функции:
function get_posts($thread_id)
{
$this->db->select('id, user_id, date_posted, content');
$this->db->from('post');
$query = $this->db->get();
if ($query->num_rows() > 0)
{
return $query->result();
}
}
Я понимаю, что нужно, чтобы присоединиться к таблице post_rating, но как бы я идти о также возвращенной любви и числа ненависти в том же массиве, что и заголовок, контент и т. д.?
Спасибо!
:)
UPDATE!
Вот моя модель на данный момент:
function get_posts($thread_id)
{
$this->db->select('post.id, post.user_id, post.date_posted, post.content, post.status_visible, user.username, user.location, user.psn, user.clan, user.critic, user.pro, SUM(case when rating = 1 then 1 end) as love, SUM(case when rating = 2 then 1 end) as hate');
$this->db->from('post');
$this->db->join('user', 'user.id = post.user_id', 'left');
$this->db->join('post_rating', 'post_rating.post_id = post.id', 'left');
$this->db->where('thread_id', $thread_id);
$this->db->order_by('date_posted', 'asc');
$query = $this->db->get();
if ($query->num_rows() > 0)
{
$this->db->select('id');
$this->db->from('post_vote');
return $query->result();
}
}
Более разумная схема оценки будет 0 для нейтральный, 1 для любви и -1 для ненависти. –
Хороший звонок. Я могу переключить его. Благодаря! – Leeloo
Не большая разница в этом запросе, но вы можете найти 'SUM (рейтинг)' полезный позже :) –