Как я могу написать этот запрос в ZF? - PullRequest
3 голосов
/ 04 июня 2009

Я пытаюсь написать это, запрос с zf select, но безуспешно

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

Я пытался что-то вроде этого:

$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().')');

Кто-нибудь может помочь мне решить проблему!?

Ответы [ 2 ]

1 голос
/ 05 июня 2009

Вы можете попробовать это:

$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);
1 голос
/ 04 июня 2009

Это должно сделать это:

$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());

Выход:

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

Дайте мне знать, как это происходит, я использовал приведенный ниже код для тестирования, но не тестировал выполнение фактического запроса, поскольку у меня нет таких структур данных:

$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());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...