【问题标题】:Zend Frameworks 1.12: how to join custom subquery table without returning resultsZend Frameworks 1.12:如何加入自定义子查询表而不返回结果
【发布时间】:2015-02-20 14:35:16
【问题描述】:

我需要使用 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.*,但仍然使用子查询进行内连接吗?

【问题讨论】:

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


    【解决方案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())
    

    【讨论】:

      猜你喜欢
      • 2011-08-13
      • 2013-12-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-16
      相关资源
      最近更新 更多