Zend Frameworks 1.12:如何在不返回结果的情况下加入自定义子查询表

时间:2015-02-20 14:35:16

标签: php zend-framework zend-db-select

我需要使用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`

我不需要select中的t.*,因为t表将在复杂查询中以其他方式使用。

您知道如何选择t.*但仍然使用子查询进行内连接吗?

1 个答案:

答案 0 :(得分:1)

Zend_Db_Select->join命令是两个/三个参数的构建。

  • 表名(带有可能的别名)
  • on part(ON table1.a = table2.a ..)
  • 以及您要选择的列(如果您在此处未定义参数,则最终选择所有可能的字段“t`。*”)

在您的查询中,您缺少最后一个参数。如果您为联接分配另一个参数(请参阅下面的示例),您应该只获得->from(...部分中表格的结果。

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