Zend Frameworks 1.12: как объединить пользовательскую таблицу подзапросов, не возвращая результатов

Мне нужно создать следующий запрос (это только пример), используя 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.* но все еще есть внутреннее соединение, используя подзапрос?

1

Решение

Zend_Db_Select->join Команда состоит из двух / трех параметров.

  • имя таблицы (с возможным псевдонимом)
  • на части (ON table1.a = table2.a ..)
  • и столбцы, которые вы хотите выбрать (если вы не определите здесь ни одного параметра, вы в конечном итоге выберете все возможные поля «t`. *»)

В вашем запросе вы пропустили последний параметр. Если вы назначите другой параметр для объединения (см. Пример ниже), вы должны получить только результаты из таблицы в вашем ->from(... часть.

->join(array('t' => new Zend_Db_Expr('(SELECT id FROM tables where id = 13)')), array(), array())
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]