gpt4 book ai didi

left-join - Zend_Db_Select : LEFT JOIN on a subselect

转载 作者:行者123 更新时间:2023-12-01 09:06:37 26 4
gpt4 key购买 nike

我有一个查询,它在子选择上执行 LEFT JOIN。此查询在高负载环境中运行,并在设定的要求内执行。查询(高度简化)如下所示:

SELECT
table_A.pKey
, table_A.uKey
, table_A.aaa
, table_B.bbb
, alias_C.ccc
, alias_C.ddd
FROM table_A
INNER JOIN table_B ON table_A.pKey = table_B.pKey
LEFT JOIN (

SELECT
table_X.pKey
, table_X.ccc
, table_Y.ddd
FROM table_X
INNER JOIN table_Y ON table_X.pKey = table_Y.pKey

) AS alias_C ON table_A.uKey = alias_C.pKey;

(由于各种原因,无法将子选择重写为(直接)LEFT JOIN)。

现在,我无法让 LEFT JOIN on subselectZend_Db_Select 一起使用。我已经尝试了所有我能想到的方法,但它不起作用。


所以我的问题是:

  • 难道不能用 Zend_Db_Select 进行上述查询吗?
  • 我需要什么语法才能让它在 Zend Framework 中工作?

最佳答案

我认为它应该像这样工作:

$subselect = $db->select->from(array('x' => 'table_X'), array('x.pKey', 'x.ccc', 'y.ddd'), 'dbname')
->join(array('Y' => 'table_Y'), 'x.pkey = y.pkey', array(), 'dbname');

$select = $db->select->from(array('a' => 'table_A'), array(/*needed columns*/), 'dbname')
->join(array('b' => 'table_B'), 'a.pkey = b.pkey', array(), 'dbname')
->joinLeft(array('c' => new Zend_Db_Expr('('.$subselect.')'), 'c.pkey = a.ukey', array())

我没有尝试过,但我相信它会起作用。

关于left-join - Zend_Db_Select : LEFT JOIN on a subselect,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6663473/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com