Hiii, В настоящее время у меня проблема. Я не вижу возможности удалить кавычки, сгенерированные zend, при генерации запроса подзапроса, который помещается в операцию соединения. $ SelectInnerQuery создает дополнительный запрос, который используется в операции объединения, это называется внутренней таблицей. Это используется для соединения с таблицей ответов. Для окончательного запроса используется $select. Пожалуйста, помогите мне в этом...
$selectInnerQuery= $sql->select()->from(array('answer' => 'tblanswer'))->columns(array('aid' => new Expression('answer.aid'),'count' => new Expression('count(answer.qid)')));
$innerstatement = $sql->getSqlStringForSqlObject($selectInnerQuery);
$select = $sql->select()->from(array('answer' => 'tblanswer'))->columns($fieldsToSelect);
$select->join(array('inneranswer' => $innerstatement), 'inneranswer.aid = answer.aid', array(),'inner');
Запрос, который я получаю из zend,
SELECT `answer`.* FROM `tblanswer` AS `answer`
inner join `SELECT answer.aid AS ``aid``, count(answer.qid) AS ``count`` FROM ``tblanswer`` AS ``answer`` WHERE answer.qid !=0 GROUP BY answer.qid, answer.baid` AS `inneranswer` ON `inneranswer`.`aid` = `answer`.`aid`
Я пробовал новое выражение, но он не работает в операции соединения.
Произошла одна и та же проблема. В массиве Join table должен быть выбран объект Select вместо выбранного запроса.
$selectObj = $sql->select()->from(array('answer' => 'tblanswer'))->columns(array('aid' => new Expression('answer.aid'),'count' => new Expression('count(answer.qid)')));
$select = $sql->select()->from(array('answer' => 'tblanswer'))->columns($fieldsToSelect);
$select->join(array('inneranswer' => $selectObj), 'inneranswer.aid = answer.aid', array(),'inner');
Когда вы указываете свое $innerstatement при присоединении, укажите как "{$ innerstatement}" , это может решить вашу проблему с кавычками, а также проверить, что ваш запрос внутреннего запроса возвращает sql-запрос или он возвращается как объект.