Как написать select с подзапросом в CakePHP

74
7

У меня есть следующий запрос:

$queryResult = $this->Hit->query(
"select P, count(S) as S
from
(
select pattern_id as P, srn as S from hits
where job_id=".$id." and srn != ''
group by srn, pattern_id
order by pattern_id, srn
) as T
group by P
order by P;"
);

Поэтому в основном у меня есть select.. from (select..)... statement. Он работает идеально, когда я использую MySQL. Но мне нужно перенести DB в PostgreSQL, поэтому я хотел бы изменить это на Cake-way. Поэтому мой вопрос заключается в том, как я могу интерпретировать этот тип запроса (select from select) в CakePHP?

Заранее спасибо.

спросил(а) 2014-05-23T11:55:00+04:00 6 лет, 9 месяцев назад
1
Решение
85

Я не уверен, что вы подразумеваете, интерпретируя этот запрос в CakePHP, поскольку ваш код действителен CakePHP.

При этом я бы переписал ваш запрос как:

SELECT pattern_id as P, COUNT(DISTINCT srn) as S
FROM hits
WHERE job_id=".$id." and srn != ''
GROUP BY pattern_id
ORDER BY pattern_id;

(Я считаю, что это эквивалентно - вы можете загрузить sqlfiddle.com с образцами данных для лучшего тестирования)

Если это работает, и у вас есть модель Hits, вы можете повторно написать запрос с помощью метода find.

ответил(а) 2014-05-23T14:24:00+04:00 6 лет, 9 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема