Мне нужно создать следующий запрос (это только пример), используя Zend Framework 1.12 как часть более крупного запроса:
SELECT `s`.*
FROM `s`
INNER JOIN SELECT id FROM table where id = 13 AS `t`
Вот моя попытка:
$query = $this->getDbTable()->select()
->from($this->getDbTable(), array('*'))
->join(array('t' => new Zend_Db_Expr('(SELECT id FROM tables where id = 13)')), array())
->setIntegrityCheck(false);
Тем не менее, это вывод:
SELECT `students`.*, `t`.*
FROM `students`
INNER JOIN SELECT id FROM tables where id = 13 AS `t`
Я не требую t.*
от выбора, так как t
Таблица будет использоваться другими способами в рамках сложного запроса.
Вы знаете, как не выбрать t.*
но все еще есть внутреннее соединение, используя подзапрос?
Zend_Db_Select->join
Команда состоит из двух / трех параметров.
В вашем запросе вы пропустили последний параметр. Если вы назначите другой параметр для объединения (см. Пример ниже), вы должны получить только результаты из таблицы в вашем ->from(...
часть.
->join(array('t' => new Zend_Db_Expr('(SELECT id FROM tables where id = 13)')), array(), array())
Других решений пока нет …