Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment obtenir une note moyenne par produit en utilisant la requête codeigniter ?

obtenir des données à partir du tableau notes , en utilisant une jointure gauche avec select pour la moyenne.

la fonction join() de Codeigniter vous permet d'écrire une partie de sélection au lieu du nom de la table, mais vous devez la placer entre parenthèses :

$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();

génère :

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

et les résultats attendus.