sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo obtener una calificación promedio por producto usando la consulta Codeigniter?

obtener datos de la tabla puntuaciones , usando una combinación izquierda con selección para el promedio.

la función join() de Codeigniter le permite escribir una parte seleccionada en lugar del nombre de la tabla, pero debe colocarla entre paréntesis:

$this->db->select('t1.*, t2.avg_rating, t3.*');
$this->db->from('ratings t1');
$this->db->join('
                  (select product_id, avg(rating) as avg_rating 
                   from ratings 
                   group by product_id)  t2','t2.product_id=t1.product_id','left'
                );
$this->db->join('users t3','t3.id=t1.user_id','left'); 
$this->group_by('t1.userid')
$this->db->get()->result();

genera:

SELECT t1.*, t2.avg_rating, t3.*
FROM ratings t1
left join 
        (select product_id, avg(rating) as avg_rating from ratings group by product_id)  t2 
    on t2.product_id=t1.product_id
left join users t3
    on t1.user_id = t3.id
group by t1.user_id

y resultados como espera.