使用Zend_Db_Select在一个连接中包含多个表

时间:2012-06-09 17:12:58

标签: mysql left-join zend-db-select

我知道Zend_Db_Select的用法是可选的,但我想知道是否有办法用它来生成以下SQL:

         LEFT JOIN (pages p
             , core_url_rewrite url)
            ON p.page_id = mi.page_id
           AND url.page_id = p.page_id

..或者如果不支持的话。从我所看到的你一次只能加入一张桌子。如果您将表包含为Zend_Db_Expr:

->joinLeft(new Zend_Db_Expr('(pages p, core_url_rewrite url)'), 
    'ON p.page_id = mi.page_id
    AND url.page_id = p.page_id')

然后我会得到类似下面的内容,这是无效的

         LEFT JOIN (pages p
             , core_url_rewrite url) AS t
            ON p.page_id = mi.page_id
           AND url.page_id = p.page_id

1 个答案:

答案 0 :(得分:0)

不支持多个表JOIN。 Zend_Db_Select被编程为仅支持一个数组元素作为连接表参数名称,如果它是Zend_Db_ExprZend_Db_Select实例,它将为其分配别名't',假设您输入的是单个表名/表达式。

你可以把它分成两个joinLeft,这对未来的维护可能更好,与你想要的没什么区别。