sql >> データベース >  >> RDS >> Mysql

codeigniterクエリを使用して製品ごとの平均評価を取得するにはどうすればよいですか?

    テーブルの評価からデータを取得する 、平均の選択で左結合を使用します。

    join()関数 of Codeigniterを使用すると、テーブル名の代わりに選択部分を記述できますが、括弧で囲む必要があります:

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

    生成:

    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
    

    期待どおりに出力します。



    1. スタックの構成-MySQLコンテナのDockerデプロイメントを簡素化する

    2. MySQLデータベースの既存のデータにデータを追加する

    3. PHP変数を使用してmysqlテーブルを作成する

    4. mysqlimulti_queryの後にクエリが続く