выборка из заранее неизвестного множества таблиц
Добавлено: 21 июн 2005, 21:22
Как сделать выборку из заранее неизвестного множества таблиц, притом что формирование динамически SQL не подходит по причине большой длины?
Форум по InterBase, Firebird и Yaffil
http://www.ibaseforum.ru/
Попробую объяснить иначе: select * from table1,table2,..tableN; таблиц может быть больше чем 255. Можно ли в принципе за один вызов сделать выборку из более чем 255 таблиц?Merlin писал(а):Примерно так же, как пойти туда, не знаю куда, и принести то, не знаю что.
Как зачем?Лысый писал(а):И зачем надо такое декартово произведение?
Нетtss писал(а):select * from table1,table2,..tableN; таблиц может быть больше чем 255. Можно ли в принципе за один вызов сделать выборку из более чем 255 таблиц?
Хоть один нормальный ответ. А с помощью ХП никак нельзя решить?Нет
Никак. Я не знаю серверов, которые могут объединять более 256 таблиц в запросе и не знаю, зачем это нужно. Даже если представить себе, что такое возможно, я думаю план построения этого запроса будет строится очень долгоtss писал(а):А с помощью ХП никак нельзя решить?
Если я спрошу иначе: можно ли написать процедуру которая бы выбрала по одной записи из 365 таблиц и вернула результат в виде набора данных?hvlad писал(а):Никак. Я не знаю серверов, которые могут объединять более 256 таблиц в запросе и не знаю, зачем это нужно. Даже если представить себе, что такое возможно, я думаю план построения этого запроса будет строится очень долгоtss писал(а):А с помощью ХП никак нельзя решить?
В IB\FB есть архитектурное ограничение на 255 контекстов, используемых в одном запросе - неважно, простой это SELECT, или вызов SP.
Контекст - это ссылка на таблицу (persistent или derived), агрегат
Одну процедуру - нет, т.к. можно написать только 255 селектов в одной процедуре.tss писал(а):Если я спрошу иначе: можно ли написать процедуру которая бы выбрала по одной записи из 365 таблиц и вернула результат в виде набора данных?
А может всё таки имеет пересмотреть структуру БД?tss писал(а):Если я спрошу иначе: можно ли написать процедуру которая бы выбрала по одной записи из 365 таблиц и вернула результат в виде набора данных?
совсем не равно вот этому:tss писал(а):Если я спрошу иначе: можно ли написать процедуру которая бы выбрала по одной записи из 365 таблиц и вернула результат в виде набора данных?
даже если в каждой таблице по одной записи...select * from table1,table2,..tableN;
Может тебе Union попробоватьtss писал(а):структура БД определена не мной и менять я ее не могу. белее того, ее не нужно менять, не смотря ни на что она правильная. если бы каждый день нужно было сохранять порядка 100тыс. записей как бы кто поступил? то что на каждый день заводится новая таблица, для таких условий - это нормально.
Глупости (и\или тяжкое наследие времен dbf).tss писал(а):если бы каждый день нужно было сохранять порядка 100тыс. записей как бы кто поступил? то что на каждый день заводится новая таблица, для таких условий - это нормально.
Ну вот у меня в небольшой базульке около 3 млн в одной таблице и чо?tss писал(а):структура БД определена не мной и менять я ее не могу. белее того, ее не нужно менять, не смотря ни на что она правильная. если бы каждый день нужно было сохранять порядка 100тыс. записей как бы кто поступил? то что на каждый день заводится новая таблица, для таких условий - это нормально.