2008-12-13 58 views
1

比方说,有这样的事:如何快速创建使用Zend_Db的复杂选择查询?

SELECT energy_produced, energy_consumed, timestamp1 AS timestamp FROM (
SELECT max(energy_produced) AS energy_produced, mid(timestamp, 1, 10) AS timestamp1 FROM tbl_energy 
WHERE site_id = 1366 AND mid(timestamp, 1, 10) >= DATE_SUB(curdate(),INTERVAL 1 day) 
group by mid(timestamp1, 1, 10)) AS e1 
INNER JOIN (
SELECT max(energy_consumed) AS energy_consumed, mid(timestamp, 1, 10) AS timestamp2 FROM tbl_energy 
WHERE site_id = 1366 AND mid(timestamp, 1, 10) >= DATE_SUB(curdate(),INTERVAL 1 day) 
group by mid(timestamp2, 1, 10)) AS e2 
ON e1.timestamp1 = e2.timestamp2 

我可以只是把这些东西它在一个变量,并呼吁像$ DB->使用fetchall吸盘($选择) - >指定者?

回答

3

是的,您可以将SQL语句作为字符串传递给$db->fetchAll()方法。

您不需要对结果调用toArray(),因为默认情况下结果已经作为数组返回。

Zend_Db_Table类也有一个fetchAll()方法,但它不需要一个SQL字符串,并且它返回一个Zend_Db_Table_Rowset对象。

+0

工作就像一个魅力。非常感谢Bill! – Stuart 2008-12-13 02:15:40