Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Yii2 :Konwersja surowego zapytania do ActiveRecord

Jeśli napisane zapytanie RawSql daje pożądane wyniki, jeśli zostanie uruchomione w tabeli za pomocą phpmyadmin lub innego narzędzia, możesz je przekształcić w następujące.

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

Tylko upewnij się, że klucze obce, których używasz do łączenia innych tabel, powinny być określone w select, w przeciwnym razie może to spowodować błąd, taki jak nie znaleziono kolumny / lub nieznana kolumna.



  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:zagnieżdżony GROUP_CONCAT

  2. Procedura zapisana z opcjonalnymi parametrami WHERE

  3. Złącze MySql EF6

  4. Czy można utworzyć kolumnę id automatycznego przyrostu w widoku mysql?

  5. Czy klucze podstawowe powinny być zawsze dodawane do tabeli innodb?