@Gildars

Как выполнить подзапрос используя PHQL?

Есть такой запрос:
SELECT Messages.*
FROM (
    SELECT MAX(id) AS 'maxid', IF (author = 'Gildars', recipient, author) AS 'user'
    FROM Messages
    WHERE author = 'Gildars' or recipient = 'Gildars'
    GROUP BY user
) AS a
INNER JOIN Messages ON a.maxid = id
ORDER BY id DESC


Мне нужно этот запрос выполнить используя PHQL.
Вот как я пытался его выполнить:
$this->modelsManager->executeQuery("SELECT Aincrad\Models\Messages.*
FROM (
    SELECT MAX(id) AS 'maxid', IF (author = 'Gildars', recipient, author) AS 'user'
    FROM Aincrad\Models\Messages
    WHERE author = 'Gildars' or recipient = 'Gildars'
    GROUP BY user
) AS a
INNER JOIN Aincrad\Models\Messages ON a.maxid = id
ORDER BY id DESC
 ");

Но все глухо.
Ошибка
Syntax error, unexpected token (, near to ' SELECT MAX(id) AS 'maxid', IF (author = 'Gildars', recipient, author) AS 'user' FROM Aincrad\Models\Messages WHERE author = 'Gildars' or recipient = 'Gildars' GROUP BY user ) AS a INNER JOIN Aincrad\Models\Messages ON a.maxid = id ORDER BY id DESC ', when parsing: SELECT Aincrad\Models\Messages.* FROM ( SELECT MAX(id) AS 'maxid', IF (author = 'Gildars', recipient, author) AS 'user' FROM Aincrad\Models\Messages WHERE author = 'Gildars' or recipient = 'Gildars' GROUP BY user ) AS a INNER JOIN Aincrad\Models\Messages ON a.maxid = id ORDER BY id DESC (314)
  • Вопрос задан
  • 284 просмотра
Решения вопроса 2
Yeah
@Yeah
Subqueries in the from clause aren't supported, ho...

Это, кстати, весьма логично: просто задай себе вопрос, а как Phalcon узнает объекты какого типа нужно создавать для твоего FROM?

Если переписать SQL нельзя, то используй raw-sql с кастомной гидрацией.
Ответ написан
Комментировать
@Gildars Автор вопроса
PHQL не поддерживает подзапросы.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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