2008-12-13 13 views
1

Disons que quelque chose comme:Comment créer rapidement une requête de sélection complexe à l'aide de 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 

Puis-je farcir juste dans une variable et appeler la ventouse comme $ db-> fetchAll ($ select) -> toArray?

Répondre

3

Oui, vous pouvez passer une instruction SQL en tant que chaîne à la méthode $db->fetchAll().

Vous n'avez pas besoin d'appeler toArray() sur le résultat, car le résultat est déjà renvoyé en tant que tableau par défaut.

La classe Zend_Db_Table a également une méthode fetchAll(), mais elle ne prend pas de chaîne SQL et renvoie un objet Zend_Db_Table_Rowset.

+0

A travaillé comme un charme. Merci beaucoup Bill! – Stuart