gpt4 book ai didi

sql - 使用 Zend DB 编写子查询

转载 作者:IT老高 更新时间:2023-10-28 23:44:26 25 4
gpt4 key购买 nike

我在将下面的 SQL 转换为 Zend Db 查询时遇到了一些问题。

$select = ' SELECT s.id, i.id as instance_id, i.reference, i.name, i.sic_code, i.start_date
FROM sles s
JOIN sle_instances i
ON s.id = i.sle_id
WHERE i.id = ( SELECT MAX(id)
FROM sle_instances
WHERE sle_id = s.id
)
ORDER BY i.name ASC';

我已经了解了之前的代码 - 但 Zend Db 没有正确生成查询。谁能告诉我我错过了什么??

$select = $db->select() ->from('sles', array(   'id',
'instance_id' => 'sle_instances.id',
'reference' => 'sle_instances.reference',
'name' => 'sle_instances.name',
'sic_code' => 'sle_instances.sic_code',
'start_date' => 'sle_instances.start_date'
)
)
->join('sle_instances', 'sles.id = sle_instances.sle_id')
->where('sles.id = (SELECT MAX(id) FROM sle_instances WHERE sle_id = sles.id)')
->order('sle_instances.name ASC');

顺便说一句,SQL 确实有效。我正在使用 Zend Db 重写它,因为我希望使用 Zend Paginator 功能。

非常感谢任何帮助。

PJ

最佳答案

如果您愿意,您可以采用 @karim79 所做的并将您的子选择也变成 $this->select()...

$subselect = $db->select()
->from('sle_instances', array(new Zend_Db_Expr('max(id)')))
->where('sle_id = s.id');

$select = $db->select()->from(array("s" => "sles"),
array("s.id","i.id as instanceid","i.reference","i.name","i.sic_code","i.start_date"))
->join(array('i' => "sle_instances"),"s.id = i.sle_id",array())
->where("i.id = ($subselect)")
->order('i.name asc');

print($select);

//SELECT `s`.`id`, `i`.`id` AS `instanceid`, `i`.`reference`, `i`.`name`, `i`.`sic_code`, `i`.`start_date` FROM `sles` AS `s` INNER JOIN `sle_instances` AS `i` ON s.id = i.sle_id WHERE (i.id = (SELECT max(id) FROM `sle_instances` WHERE (sle_id = s.id))) ORDER BY `i`.`name` asc

关于sql - 使用 Zend DB 编写子查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1340564/

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