Mysql
 sql >> Database >  >> RDS >> Mysql

Come ottenere una valutazione media per prodotto utilizzando la query codeigniter?

ottenere dati dalla tabella valutazioni , utilizzando un join sinistro con seleziona per la media.

la funzione join() di Codeigniter ti permette di scrivere una parte selezionata al posto del nome della tabella, ma devi metterla tra parentesi:

$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

e risultati come ti aspetti.