Цитата:
|
А вот кста, я так и не понял как сформировать запрос с сабзапросом?
|
// Запрос номер 1 (вложенный)
$query1 = $db -> select()
-> from('blocks', 'delta')
-> where('bid = 2');
// Запрос номер 2
$query2 = $db -> select()
-> from('users')
-> where('uid = ?' , $query1)
-> limit(2);
// Посмотрим как выглядит строка запроса
print $query2->assemble();
/* Вот она:
SELECT users.* FROM users WHERE (uid = (SELECT blocks.delta FROM blocks WHERE (bid = 2))) LIMIT 2
*/
// Теперь выполним этот запрос
$result = $db->fetchAll($query2);
// Распечатаем массив результатов
print_r($result);
Теперь обратим внимание на строку:
-> where('uid = ?' , $query1)
Запрос 1 будет подставлен вместо знака вопроса. В принципе, можно использовать и конкатенацию, но тогда добавлять скобки придётся руками.
-> where('uid = (' . $query1 . ')' )
Ещё можно так:
-> where('uid = (SELECT delta FROM blocks WHERE bid = 2)')
но это уже совсем быдлокодерство.
P.S.: Сдавайтесь
PeaceCoder Zend рулит. Хотя, конечно есть и минусы: они перестраховщики большие - много линних проверок и перепроверок.