【问题标题】:Zend_Db_Table, JOIN and mysql expressions in one query?Zend_Db_Table、JOIN 和 mysql 表达式在一个查询中?
【发布时间】:2011-02-22 10:12:09
【问题描述】:

我正在尝试使用 Zend_Db_Table 构建一个复杂的(嗯...)查询,其中我需要将原始表与一个额外的表连接起来,并使用 zend_db_expr 从原始表中获取一些额外的信息。

但是,事情从一开始就出错了。我要做的是:

$select = $this->getDbTable()->select(Zend_Db_Table::SELECT_WITH_FROM_PART)
                             ->setIntegrityCheck(false);

$select->from( $this->getDbTable() , array(
    '*' ,
    new Zend_Db_Expr('`end` IS NULL as isnull') ,
    new Zend_Db_Expr('`sold` IN (1,2,3) as issold') ,
) );                                     

Zend_Debug::dump( $select->__toString() );exit;

这是什么结果:

SELECT `items`.*, `items_2`.*, `end` IS NULL as isnull, `sold` IN (1,2,3) as issold FROM `items`
 INNER JOIN `items` AS `items_2`

不过,在我与另一张表进行联接之前,我需要它是

SELECT `items`.*, `end` IS NULL as isnull, `sold` IN (1,2,3) as issold FROM `items`

我不需要与自身进行内部连接,我只需将这两个 Zend_Db_Expr 添加到应该选择的内容中,之后我将继续使用连接和 where's 等构建查询

$select->joinLeft( ... )
->where(...)

有什么想法吗?干杯。

【问题讨论】:

    标签: mysql join zend-db-table


    【解决方案1】:

    您不应该重做->from() 调用,这意味着您要在查询中添加一个新表。 相反,您应该只使用包含 Zend_Db_expr 的 ->where()->columns() 调用。

    编辑:对错误深表歉意。

    【讨论】:

    • 如何通过 ->where() 选择 Zend_Db_expr?为了从查询中获取我需要的那些表达式,我需要在 SELECT .... 部分中定义它们,据我所知,这只能使用 from,对吧?
    • 你是对的,它在选择中,等一下我会编辑回复
    猜你喜欢
    • 1970-01-01
    • 2012-03-15
    • 1970-01-01
    • 1970-01-01
    • 2015-05-22
    • 1970-01-01
    • 2011-08-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多