Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Вложенный SQL-запрос
 
 автор: Warmonger   (19.12.2006 в 23:03)   письмо автору
 
 

столкнулся с проблемой формирования SQL-запроса:


    $def='cid=(select cid from categ where gid='.$id.')';
    $sql="select * from tovar where ".$def.";";  


структура базы такая:
в таблице tovar существует численный идентификатор cid, который является id таблицы categ.

Вся проблема в том, что запрос select cid from categ where gid='.$id.' может выдать как одно значение ( в этом случае запрос обрабатывается ), так и группу значений, что приводит к ошибке.. То есть конечный запрос, например, "select * from tovar where cid=2;" - обрабатывается, а "select * from tovar where cid=Array;" - нет..
Каким образом мне сформировать запрос, чтобы учесть все значения?
Заранее спасибо..

   
 
 автор: cheops   (20.12.2006 в 02:12)   письмо автору
 
   для: Warmonger   (19.12.2006 в 23:03)
 

Используйте ограничение "LIMIT 1" - в этом случае будет гарантировано возвращёна одна запись
    $def='cid=(select cid from categ where gid='.$id.' limit 1)'; 
    $sql="select * from tovar where ".$def.";";

   
 
 автор: XPraptor   (20.12.2006 в 12:34)   письмо автору
 
   для: cheops   (20.12.2006 в 02:12)
 

Попробуйте всместо $def='cid=(select cid from categ where gid='.$id.')'; заюзать $def='cid IN ((select cid from categ where gid='.$id.'))';

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования