@akula22

Sql Запрос с временной таблицей в ActiveDataProvider?

Мне нужно такой Sql запрос вставить в ActiveDataProvider, подскажите как?
SELECT * FROM ( 
    SELECT id, username, text, sender_id 
    FROM pm 
    WHERE user_id =2 AND sender_id !=2 AND STATUS !=2 
    ORDER BY created_at DESC
) AS tmp_table GROUP BY sender_id
  • Вопрос задан
  • 178 просмотров
Пригласить эксперта
Ответы на вопрос 2
IIISpikerIII
@IIISpikerIII
На сколько большая необходимость временной таблицы в таком запросе, если же такая необходимость действительно есть то можно вставить в CSqlDataProvider
Ответ написан
@akula22 Автор вопроса
Вот такой запрос
$subQuery = (new Query())->select('id, username, text, sender_id')->from('pm')->where('user_id =2 AND sender_id !=2 AND STATUS !=2 ORDER BY created_at DESC');
    $query = self::find();
    $query->from(['AS tmp_table GROUP BY sender_id' => $subQuery]);
    $query->with(['profile']);

формирует SELECT * FROM (SELECT `id`, `username`, `text`, `sender_id` FROM `pm` WHERE user_id =2 AND sender_id !=2 AND STATUS !=2 ORDER BY created_at DESC) `AS tmp_table GROUP BY sender_id` LIMIT 10

с виду получается тот самый запрос который нужен, но он почему-то не группирует, а вот если руками убрать кавычки из `AS tmp_table GROUP BY sender_id` т.е поменять на AS tmp_table GROUP BY sender_id тогда все выводит как надо, но как заставить генерить запрос без этих кавычек?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы