Ares: SQL

16 сообщений / 0 new
Последнее сообщение
Гость
Ares: SQL

задачка
select * from (select c1 from t where c=$c) as a
Вобщем так, внутренний селект возвращает имя таблицы, из которой я потом хочу забрать все записи(внешний селект)...такая конструкция возвращает имя таблицы и после внешнего селекта. Т.е. нужно дать понять внешнему селекту что после from идет имя таблицы...
Кто знает как решить проблему? Хоть идейку подкиньте, а то уже голова идет кругом!!! Головоломка какая-то!

Sheridan
Аватар пользователя Sheridan
Не в сети
Зарегистрирован: 20/09/2010

движек какой? Насколько я поню надо смотреть в сторону exec и лепить запрос типа exec "select * from " | cast((select c1 from t where c=$c) as varchar (30))
Чтото типа того короч....
Только гляди, твой селект имни таблицы в этом случае ОБЯЗАН вернуть 1 значение
<span class='smallblacktext'>[ Редактирование 04.08.2005 - 14:28:06 ]</span>

Ares (не проверено)

на plpgsql

Ares (не проверено)

так не получается...это тоже самое что и я написал...возвращает имя таблицы...есть еще предложения???

Sheridan
Аватар пользователя Sheridan
Не в сети
Зарегистрирован: 20/09/2010

Ты видно мысль не понял - тебе надо собрать _строку_ запроса и выполнить ее

Ares (не проверено)

да все я понял...не получается так в plpgsqlе....

Luter (не проверено)

разбей на 2 запроса один за одним и посмотри в каком запросе что не так идет
выведи отладочную информацию

Nick
Не в сети
Зарегистрирован: 20/09/2010

[quote=Ares]да все я понял...не получается так в plpgsqlе....[/quote]

Получается. Хотя надо бы подумать об изменении дизайна базы.

<span class='smallblacktext'>[ Редактирование 04.08.2005 - 20:31:42 ]</span>

Ares (не проверено)

Все получилось...нет структуру я специально изменил чтоб поиск по базе быстрее происходил

Sheridan
Аватар пользователя Sheridan
Не в сети
Зарегистрирован: 20/09/2010

[quote=Ares]Все получилось...нет структуру я специально изменил чтоб поиск по базе быстрее происходил[/quote]
как сделал?

Ares (не проверено)

как ты сказал, так и сделал

t:=(SELECT rubrlist FROM _rubr WHERE iam=i_am AND who=w_ho limit 1);
t:=replace (t,',',' union select * from _');
t2:='select * from _'||t;
FOR result IN EXECUTE t2
loop return next result;
END loop;
return;

Ares (не проверено)

Просто в pgAdmine help по-странному сделан, пока что нибудь найдешь...еще стольким вещам научишься))))

Ares (не проверено)

Sheridan, спасибо подсказал куда копать

Sheridan
Аватар пользователя Sheridan
Не в сети
Зарегистрирован: 20/09/2010

дык :)

Sheridan
Аватар пользователя Sheridan
Не в сети
Зарегистрирован: 20/09/2010

Хотя с другой стороны у тебя скорее всего неверная модель или организация БД раз тебе приходится так вот извращатся. Я про имена таблиц в БД.

Ares (не проверено)

Да все у меня нормально...это я так сказать экспериментировал с увеличением скорости поиска по таблице(есть одна, но большая вот я и разбил на маленькие). Но оказалось, что ощутимых результатов это не принесло...(((

RSS-материал