powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Доступ к таблице по названию в поле(внутри серверной процетуры)
11 сообщений из 11, страница 1 из 1
Доступ к таблице по названию в поле(внутри серверной процетуры)
    #36164971
korisk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть база:
create table head (type varchar(255), tbl varchar(255));
create table type1 (t1var1 int, t1var2 int, t1var3 int);
create table type2 (t2var1 int, t2var2 int);
..

insert into head values('item1','type1');
insert into head values('item2','type2');
..

insert into type1 values (123,323,123);
..
insert into type2 values (43243,23423);
..
insert into type3 values (43243,23423);
..

Нужна серверная процедура которая бы делала так:
select foo('type1'); --т.е. select * from type1;
t1var1|t1var2|t1var3|
123|323|123|

select foo('type2'); -- т.е. select * from type2;
t2var1|t2var2
43243|23423

В сторону какого ключевого слова смотреть? подскажите, пожалуйста.
...
Рейтинг: 0 / 0
Доступ к таблице по названию в поле(внутри серверной процетуры)
    #36164973
korisk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
select foo('item1'); --т.е. select * from type1;
t1var1|t1var2|t1var3|
123|323|123|

select foo('item2'); -- т.е. select * from type2;
t2var1|t2var2
43243|23423
...
Рейтинг: 0 / 0
Доступ к таблице по названию в поле(внутри серверной процетуры)
    #36165111
Фотография ChA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
koriskВ сторону какого ключевого слова смотреть? подскажите, пожалуйста.Ваш вопрос не имеет никакого отношения к форуму "Проектирование БД". Задайте вопрос на профильном форуме по используемой Вами СУБД.
...
Рейтинг: 0 / 0
Доступ к таблице по названию в поле(внутри серверной процетуры)
    #36165141
Naf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
korisk
Нужна серверная процедура которая бы делала так:
select foo('type1'); --т.е. select * from type1;
t1var1|t1var2|t1var3|
123|323|123|

select foo('type2'); -- т.е. select * from type2;
t2var1|t2var2
43243|23423

В сторону какого ключевого слова смотреть? подскажите, пожалуйста.для чего это?
...
Рейтинг: 0 / 0
Доступ к таблице по названию в поле(внутри серверной процетуры)
    #36165245
korisk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Nafдля чего это?
Каждый item имеет разные параметры(разное их число с разными типами ). В зависимости от реализации имеется разное item-ов. А код клиента хотелось бы сделать не зависимым от количества итемов.

ChAВаш вопрос не имеет никакого отношения к форуму "Проектирование БД". Задайте вопрос на профильном форуме по используемой Вами СУБД.
Как я понял, предложенное мной решение в реляционную алгебру не укладывается. А хранить числа в виде строки не экономно. Может существоует более качественное решение?
...
Рейтинг: 0 / 0
Доступ к таблице по названию в поле(внутри серверной процетуры)
    #36165251
СУБД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если необходимо получить неизвестно что наперед, можно пользоваться метаданными СУБД. Для MS SQL это семейство системных вью INFORMATION_SCHEMA.TABLES, INFORMATION_SCHEMA.COLUMNS и т.п.
...
Рейтинг: 0 / 0
Доступ к таблице по названию в поле(внутри серверной процетуры)
    #36165508
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
korisk пишет:

> Нужна серверная процедура которая бы делала так:
> select foo('type1'); --т.е. select * from type1;
> В сторону какого ключевого слова смотреть? подскажите, пожалуйста.

Смотреть надо в сторону редизайта БД, это у тебя с ним проблемы.
Такого в принципе не должно быть, чтобы тебе такие выкрутасы нужны были бы.
Названия полей, таблиц, view доложны быть статичными в запросах.
потому что запросы динамически их вычислять не умеют.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Доступ к таблице по названию в поле(внутри серверной процетуры)
    #36165543
Naf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В чем проблема? с клиента на сервер вы все равно собрались имя таблицы передавать, но и сгенерируйьте что-то типа:
Код: plaintext
1.
Query.SQL:='SELECT * FROM '+TabelName;
Query.Open();
С уважением, Naf
...
Рейтинг: 0 / 0
Доступ к таблице по названию в поле(внутри серверной процетуры)
    #36166805
korisk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
СУБДЕсли необходимо получить неизвестно что наперед, можно пользоваться метаданными СУБД. Для MS SQL это семейство системных вью INFORMATION_SCHEMA.TABLES, INFORMATION_SCHEMA.COLUMNS и т.п.
Спасибо посмотрю.

Naf
В чем проблема? с клиента на сервер вы все равно собрались имя таблицы передавать, но и сгенерируйьте что-то типа:
Код: plaintext
1.
Query.SQL:='SELECT * FROM '+TabelName;
Query.Open();
С уважением, Naf
Хочу чтобы при добавлении данных код менять не нужно было.

MasterZivСмотреть надо в сторону редизайта БД, это у тебя с ним проблемы.
Такого в принципе не должно быть, чтобы тебе такие выкрутасы нужны были бы.
Названия полей, таблиц, view доложны быть статичными в запросах.
потому что запросы динамически их вычислять не умеют.
Самому не нравиться. Всю голову поломал, но придумал :)

Решил как то так сделать:
1 create table items (itemid int , tbl varchar(255));
2
3 create table charvars (intemid int, var varchar);
4 create table intvars (intemid int, var int);
5
6 select * from charvars union select * from intvars;

Не экономно, правда.. Что скажите?
...
Рейтинг: 0 / 0
Доступ к таблице по названию в поле(внутри серверной процетуры)
    #36166826
korisk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
where itemid = ITMID; конечно. ну или JOIN
...
Рейтинг: 0 / 0
Доступ к таблице по названию в поле(внутри серверной процетуры)
    #36166900
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
korisk пишет:

> Самому не нравиться. Всю голову поломал, но придумал :)
>
> Решил как то так сделать:
> 1 create table items (itemid int , tbl varchar(255));
> 2
> 3 create table charvars (intemid int, var varchar);
> 4 create table intvars (intemid int, var int);
> 5
> 6 select * from charvars union select * from intvars;
>
> Не экономно, правда.. Что скажите?

Я ничего не скажу, пока вашу схему не увижу.

А так -- все "динамически" поименованные таблицы
надо сгонять в одну, возможно добавляя тип сущности
в PK таблицы.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Доступ к таблице по названию в поле(внутри серверной процетуры)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]