Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Базы Данных > обозначение подзапросов переменной


Автор: MaliceInWonderland 18.6.2007, 15:57
Код

$level= "select * from catalogue where pid in (select id from catalogue where pid='$id' or pid2='$id') or pid2 in (select id from catalogue where pid='$id' or pid2='$id')"; 
так работает.

возможно присвоить
Код

 $ main ="select id from catalogue where pid='$id' or pid2='$id'";
$result = mysql_query($main);
а затем использовать $result вместо повторяющихся подзапросов?
присвоение возвращает некорректную информацию.

Автор: Glip 18.6.2007, 17:58
вообще конечно заменить можно. как-то так
Код

$main ="select id from catalogue where pid='$id' or pid2='$id'";
$level= "select * from catalogue where pid in ($main) or pid2 in ($main)"; 

но кажется мне что изначальный запрос можно оптимизировать

Автор: Всемогущий 18.6.2007, 18:41
Пожалуйста 
опишите по русски какие есть исходные данные,и какой должен быть результат

Автор: MaliceInWonderland 19.6.2007, 06:12
каскадно выводим, обновляем, удаляем id и все зависимые поля (связанные с вводимым с клавиатуры $id прямо или косвенно).

нпр,  5550000001(id) 5550000000(pid) 4400000000(pid2) 
         5551000000       5550000001      -//-//-
         5551000001       5551000000
и.т.д.

количество уровней вложенности заранее неизвестно, но > 5.
как можно оптимизировать?

Код

level= "delete id from catalogue where pid in (select id from catalogue where pid in 
(select id from catalogue where pid='$id' or pid2='$id')
 or pid2 in 
(select id from catalogue where pid='$id' or pid2='$id')
  or pid2 in 
(select id from catalogue where pid in 
(select id from catalogue where pid='$id' or pid2='$id')
 or pid2 in 
(select id from catalogue where pid='$id' or pid2='$id')
 )";

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)