Mysql
 sql >> база данни >  >> RDS >> Mysql

Yii2 :Преобразуване на необработена заявка в ActiveRecord

Ако RawSql заявката, която сте написали, ви дава желаните резултати, ако се изпълни на таблицата с помощта на phpmyadmin или друга помощна програма, можете да я трансформирате в следното.

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

Просто се уверете, че външните ключове, които използвате, за да се присъедините към другите таблици, трябва да бъдат посочени в селекцията, в противен случай може да ви даде грешка като колона не е намерена / или неизвестна колона.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Същият масив няколко пъти в MySQL IN заявка с PDO

  2. MySQL групиране по и пропускане на групиране на нулеви стойности

  3. конвертиране на mysql скриптове в postgresql скрипт

  4. Използване на група по две полета и броене в SQL

  5. Общо текущо за периода от време – попълнете липсващите дати