gpt4 book ai didi

mysql - Zend DB 联盟不工作

转载 作者:行者123 更新时间:2023-11-29 14:38:47 26 4
gpt4 key购买 nike

我的任务是将旧查询翻译成 Zend,一切进展顺利,直到我创建联合。由于公司规定,我无法发布查询的实际内容,但基本上我所拥有的是:

$sql1 = $db->select()
->from(array('t' => 'tableOne'), array('t.id'))
->joinLeft(array('tt' => 'tableTwo'), 'tt.fk_tableOne_id = t.id', array())
->where($db->quoteInto('tt.active = ?', 'Y'));
$sql2 = $db->select()
->from(array('t' => 'tableOne'), array('t.id'))
->joinLeft(array('tt' => 'tableTwo'), 'tt.fk_tableOne_id = t.id', array())
->where($db->quoteInto('tt.active = ?', 'Y'));
$select = $db->select()->union(array($sql1, $sql2))->order('t.id');

现在,如果我在 $sql1 上执行 fetchAll,它就会起作用。如果我在 $sql2 上执行 fetchAll,它就会起作用。但是,当我对 $select 执行 fetchAll 时,出现错误 1064 语法错误。

echo $select 回显的 sql 字符串基本上是

(ORDER BY `t.id` ASC) UNION (SELECT ... ) UNION (SELECT ...)

ORDER BY 附近有语法错误...

看来这一切都应该有效,因为两个查询独立工作,有什么想法吗?

最佳答案

我尝试了您的稍微修改过的查询:

$sql1 = $zdb->select()
->from(array('t' => 'articles'), array('t.id'))
->joinLeft(array('tt' => 'users'), 'tt.id = t.author_id', array())
->where($zdb->quoteInto('tt.level = ?', 'editor'));
$sql2 = $zdb->select()
->from(array('t' => 'blogs'), array('t.id'))
->joinLeft(array('tt' => 'users'), 'tt.id = t.updated_by', array())
->where($zdb->quoteInto('tt.level = ?', 'editor'));
$select = $zdb->select()->union(array($sql1, $sql2))->order('id');

echo $select;

并得到以下结果:

SELECT `t`.`id` FROM `articles` AS `t` LEFT JOIN `users` AS `tt` ON tt.id = t.author_id
WHERE (tt.level = 'editor') UNION SELECT `t`.`id` FROM `blogs` AS `t` LEFT JOIN `users`
AS `tt` ON tt.id = t.updated_by WHERE (tt.level = 'editor') ORDER BY `id` ASC

您使用的框架是什么版本?

关于mysql - Zend DB 联盟不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8435265/

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