Ниже приведен мой чистый SQL-запрос.Как использовать подзапрос в функции соединения Yii framework 2 ActiveRecord?
SELECT a.*, b.*
FROM a
INNER JOIN b
ON a.id = b.a_id
INNER JOIN (
SELECT a_id, MAX(add_time) AS max_add_time
FROM b
GROUP BY a_id
) m
ON b.a_id = m.a_id AND b.add_time = m.max_add_time
ORDER BY b.add_time DESC
У меня есть подзапрос во втором INNER JOIN
. Ниже моего активного запроса.
$subQuery = B::find()->select(['a_id', 'MAX(add_time) AS max_add_time'])->groupBy('a_id');
$query = A::find()->innerJoin('b', 'a.id = b.a_id')
->innerJoin('(' .
$subQuery->prepare(Yii::$app->db->queryBuilder)
->createCommand()
->rawSql
. ') m', 'b.a_id = m.a_id AND a.add_time = m.max_add_time ')
->orderBy('b.add_time DESC');
Он отлично работает, но мне не нравится, как я использую подзапрос во втором INNER JOIN
. Я хочу подойти с этим запросом, чтобы выбрать внутреннее соединение левой таблицы с правой таблицей, группой по a_id
и упорядочить по add_time (DESC) правой таблицы. Как лучше использовать подзапрос во втором INNER JOIN?
Спасибо, тонна брата. Я страдал от прошлого месяца, и, наконец, я получил это решение. – Rahul
Отличное решение, отличная работа! –