Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Yii2:Chuyển một truy vấn thô thành ActiveRecord

Nếu truy vấn RawSql bạn đã viết mang lại cho bạn kết quả mong muốn nếu được chạy trên bảng bằng phpmyadmin hoặc bất kỳ tiện ích nào khác, bạn có thể biến đổi nó thành như sau.

$subQuery = Adanalytics::find()
        ->select([new Expression('[[id]], [[ad_id]], MAX([[impression]]) as impression, max([[view]]) as view, max([[clicks]]) as clicks,[[visitor_ip]],[[publisher_id]]')])
        ->where(['publisher_id' =>  Yii::$app->user->identity->id ])->
        ->groupBy('[[id]], [[visitor_ip]]');

$query = Adanalytics::find()
        ->select([new \yii\db\Expression('t.[[date_event]], t.[[id]], t.[[ad_id]], sum(t.[[impression]]) as total_impression, sum(t.[[view]]) 
         as total_views, sum(t.[[clicks]]) as total_clicks, t.[[publisher_id]], i.[[budget]],i.[[name_of_campaign]]')])
        ->from(['t' => $subQuery])
        ->innerJoin('{{%inventory}} i', 'i.id=t.ad_id')
        ->groupBy('t.ad_id, t.date_event');
$query->all()

Chỉ cần đảm bảo rằng các khóa ngoại mà bạn sử dụng để nối các bảng khác phải được chỉ định trong vùng chọn, nếu không, nó có thể mang lại cho bạn lỗi như không tìm thấy cột / hoặc cột không xác định.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách chuyển đổi dữ liệu Blob trong MYSQL sang Android ImageView

  2. PDO tạo cơ sở dữ liệu và bảng

  3. Cách chuyển đổi IPv6 từ nhị phân để lưu trữ trong MySQL

  4. thả bảng trong mysql từ bên ngoài

  5. Làm cách nào để cập nhật hàng loạt bản ghi bằng cách sử dụng sequize.js và bỏ qua một số cột nhất định