2009-06-04 7 views
3

Je suis en train d'écrire ceci, requête avec zf select mais sans succèsComment puis-je écrire cette requête dans ZF?

SELECT * FROM `subscribers` WHERE id IN (Select subscriber_id From gs_relations Where group_id=55) 

Je tentais avec ssomething comme ceci:

$gs_relations = new GSRelations(); 
$part = gs_relations->select()->from('gs_relations',subscriber_id')->where("group_id=$group_id"); 
$select = $this->select()->setIntegrityCheck(false); 
return $select->where('id IN ('.$part->__toString().')'); 

Tout le monde peut me aider à résoudre le problème !?

+1

+1, je ne comprends pas pourquoi les vraies questions ne sont jamais voté vers le haut. – karim79

Répondre

1

Cela devrait le faire:

$gs_relations = new GSRelations(); 
$part = $gs_relations->select()->from('gs_relations','subscriber_id')->where('group_id = ?',$group_id); 
$select = $this->select()->setIntegrityCheck(false); 
$select->from('subscribers')->where('id in (' . $part->__toString() . ')'); 
return $select; 

print_r($select->__toString());

Sortie:

SELECT `subscribers`.* FROM `subscribers` WHERE (id in (SELECT `gs_relations`.`subscriber_id` FROM `gs_relations` WHERE (group_id = 55))) 

faites-moi savoir comment ça se passe, je le code ci-dessous pour les essais, mais n'a pas testé l'exécution de la requête réelle car je n'ai pas de telles structures de données:

$groupId = 55; 
$part = $this->db->select()->from('gs_relations','subscriber_id')->where('group_id = ?',$groupId); 
$select = $this->db->select()->from('subscribers')->where('id in (' . $part->__toString() . ')'); 
print_r($select->__toString()); 
+0

Yeap c'est, mais j'ai écrit quelques requêtes qui étaient en fait forking, mais vous savez comment c'est quand tout simplement il ne va pas ... Tnx pour de l'aide de toute façon ... – Splendid

+0

Bonne réponse karim79 - I upvoted –

1

Vous pouvez essayer ceci:

$groupId = 55; 
$part = $gs_relations->select()->setIntegrityCheck(false)->from('gs_relations','subscriber_id')->where('group_id = ?', $groupId); 
$select = $gs_relations->select()->setIntegrityCheck(false)->from('subscribers')->where('id in ?', $part); 
+0

+1 - Je ne savais pas que vous pouviez passer un select() à un autre espace réservé de select()! – karim79