sql >> Database >  >> RDS >> Mysql

Hoe krijg ik een gemiddelde beoordeling per product met behulp van een codeigniter-query?

haal gegevens op uit tabel beoordelingen , gebruik een left join met select voor het gemiddelde.

de join() functie van Codeigniter stelt je in staat om een ​​geselecteerd onderdeel te schrijven in plaats van de tabelnaam, maar je moet het tussen haakjes plaatsen:

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

genereert:

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

en voert uit zoals u verwacht.



  1. Wat gebruikt LISTAGG met ORDER BY NULL eigenlijk als bestelcriterium?

  2. Maanden sorteren terwijl ik ze naar tekst converteer

  3. PostgreSQL nextval en currval in dezelfde query

  4. Verbinding maken met SSL-enabled Oracle DB via Java (JDBC)