Показать сообщение отдельно
  #38 (permalink)  
Старый 27.02.2010, 00:41
Аватар для Tim
Tim Tim вне форума
Профессор
Отправить личное сообщение для Tim Посмотреть профиль Найти все сообщения от Tim
 
Регистрация: 05.06.2009
Сообщений: 1,703

Цитата:
А вот кста, я так и не понял как сформировать запрос с сабзапросом?
// Запрос номер 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 рулит. Хотя, конечно есть и минусы: они перестраховщики большие - много линних проверок и перепроверок.
__________________
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.
Самые главные в жизни вещи - не вещи! (было написано на одном гараже =)

Последний раз редактировалось Tim, 27.02.2010 в 01:04.
Ответить с цитированием