2013-02-14 6 views
0

Je voudrais exécuter une requête MySQL sur un ensemble de lignes qu'un zend select m'a renvoyé d'une autre requête.Faire une requête sur un ensemble de lignes d'une requête précédente Zend

La raison en est que j'ai besoin de la requête précédente "plus générale" et que j'ai besoin d'obtenir des lignes plus précises en fonction de ce que je veux d'elles.

Y a-t-il un moyen de le faire pour éviter de faire une autre requête à la base de données?

La longue histoire est que j'utilise un plugin autocomplete qui me renvoie les informations sur les différentes villes correspondant au modèle que l'utilisateur a saisi. C'est une requête fastidieuse à faire et je voudrais éviter de le faire chaque fois que l'utilisateur change certains paramètres de la requête qui ne concernent pas la ville en question.

Ainsi, la saisie semi-automatique me revenir avec un ensemble de lignes multiples villes, et de ce que j'aimerais « éliminer » certains d'entre eux qui ne correspondent pas aux options d'utilisateur comme une gamme de prix, distance, etc.

I Je souhaite conserver cet ensemble de lignes le plus longtemps possible et exécuter un filtrage au lieu de demander directement un nouveau jeu de lignes à la base de données à chaque fois.

Existe-t-il un moyen d'exécuter des requêtes MySQL sur cet ensemble de lignes ou dois-je le convertir en tableau et faire un filtrage manuel?

Répondre

0

Je pense que vous recherchez 'Nested Select'. Zend_Db vous pouvez le faire comme dans ce post:

Nested Select using Zend Db

Si vous avez 1.x Doctrine dans votre projet, vous pouvez le faire cette requête DQL:

$q = new Doctrine_RawSql(); 
     $q->addComponent('m', 'Application_Model_Table') 
     ->from('(SELECT * FROM table2 m2 WHERE ... // here is first query 

     ) AS m') // IMPORTANT- name as m ! 
      ->orderBy('m.created ASC') 
      ->limit($limit) 
      ->where(' // connect tables or give 2\'nd where'); 
     return $q->execute(); 

J'espère que c'est ce que vous cherchez

Questions connexes