Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2 3   вперед  Ctrl      все
 работа с таблицей, имя которой хранится в другой таблице  [new]
володька трынькин
Member

Откуда:
Сообщений: 141
Добрый день, коллеги
Имена неких таблиц (напр, Table_1, Table_2 и т.д.) хранятся в другой таблице (например, TableNames).
вопрос: как организовать выборку имен таблиц из TableNames, а потом выбрать и объединить все данные из этих таблиц? все это нужно сделать в одном запросе либо в одном хр. процедуре
1 сен 11, 20:40    [11215269]     Ответить | Цитировать Сообщить модератору
 Re: работа с таблицей, имя которой хранится в другой таблице  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31983
володька трынькин
Добрый день, коллеги
Имена неких таблиц (напр, Table_1, Table_2 и т.д.) хранятся в другой таблице (например, TableNames).
вопрос: как организовать выборку имен таблиц из TableNames, а потом выбрать и объединить все данные из этих таблиц? все это нужно сделать в одном запросе либо в одном хр. процедуре
Смитрите динамический SQL, ключевое слово EXEC
1 сен 11, 20:41    [11215272]     Ответить | Цитировать Сообщить модератору
 Re: работа с таблицей, имя которой хранится в другой таблице  [new]
iljy
Member

Откуда:
Сообщений: 8711
володька трынькин,

начните с того, что пристрелите проектировщика. А потом по желанию, хотите геморроя - читайте про EXEC, иначе читайте про проектирование.
1 сен 11, 20:45    [11215277]     Ответить | Цитировать Сообщить модератору
 Re: работа с таблицей, имя которой хранится в другой таблице  [new]
володька трынькин
Member

Откуда:
Сообщений: 141
проектировщика я пристреливать не буду, ибо на самом деле базы спроектированы норм
я описал ситуацию упрощенно, чтобы не вдаваться в подробности. на самом деле имена таблиц не в таблице хранятся, а я их динамически формирую. как бы вопрос в том - как вот это сформированное название таблицы (в переменной varchar хранящееся) подставить в селект запрос?
1 сен 11, 20:58    [11215301]     Ответить | Цитировать Сообщить модератору
 Re: работа с таблицей, имя которой хранится в другой таблице  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31983
володька трынькин
проектировщика я пристреливать не буду, ибо на самом деле базы спроектированы норм
Когда норм, не нужно использовать динамику. Это плохо влияет на скорость, безопасность, сложность кодирования и прочее.
Впрочем, сами узнаете :-)

володька трынькин
как бы вопрос в том - как вот это сформированное название таблицы (в переменной varchar хранящееся) подставить в селект запрос?
Уже ответили.
1 сен 11, 21:04    [11215315]     Ответить | Цитировать Сообщить модератору
 Re: работа с таблицей, имя которой хранится в другой таблице  [new]
iljy
Member

Откуда:
Сообщений: 8711
володька трынькин
проектировщика я пристреливать не буду, ибо на самом деле базы спроектированы норм
я описал ситуацию упрощенно, чтобы не вдаваться в подробности. на самом деле имена таблиц не в таблице хранятся, а я их динамически формирую. как бы вопрос в том - как вот это сформированное название таблицы (в переменной varchar хранящееся) подставить в селект запрос?

Да ну? И почему же это "название таблицы" тупо не является частью первичного ключа, чтобы по нему можно было производить отбор как по обычному параметру из одной общей таблицы?
А как надежно отстрелить себе ногу вам уже сказали.
1 сен 11, 21:07    [11215323]     Ответить | Цитировать Сообщить модератору
 Re: работа с таблицей, имя которой хранится в другой таблице  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
володька трынькин
проектировщика я пристреливать не буду, ибо на самом деле базы спроектированы норм
я описал ситуацию упрощенно, чтобы не вдаваться в подробности. на самом деле имена таблиц не в таблице хранятся, а я их динамически формирую. как бы вопрос в том - как вот это сформированное название таблицы (в переменной varchar хранящееся) подставить в селект запрос?


правильно, вова, только такой подход является универсальным, имен таблиц в таблице, кстати можно и сами запросы хранить в базе.
И потом читать их оттуда и выполнять. При этом приложение не надо менять, а только запросы.
И кстати апдейт, делете запросы тоже.
Я - за такой подход, а не консервативный, когда хардкодируются запросы.
1 сен 11, 21:22    [11215361]     Ответить | Цитировать Сообщить модератору
 Re: работа с таблицей, имя которой хранится в другой таблице  [new]
iap
Member

Откуда: Москва
Сообщений: 47144
володька трынькин,

и в FAQе всё есть.
1 сен 11, 21:24    [11215366]     Ответить | Цитировать Сообщить модератору
 Re: работа с таблицей, имя которой хранится в другой таблице  [new]
Запросий
Guest
iljy
Да ну? И почему же это "название таблицы" тупо не является частью первичного ключа, чтобы по нему можно было производить отбор как по обычному параметру из одной общей таблицы?


Ты, я вижу, по первичным ключам мастак ?
Будь добр, обьясни ка, свой бред ?
1 сен 11, 22:13    [11215504]     Ответить | Цитировать Сообщить модератору
 Re: работа с таблицей, имя которой хранится в другой таблице  [new]
step_ks
Member

Откуда:
Сообщений: 936
Запросий
iljy
Да ну? И почему же это "название таблицы" тупо не является частью первичного ключа, чтобы по нему можно было производить отбор как по обычному параметру из одной общей таблицы?


Ты, я вижу, по первичным ключам мастак ?
Будь добр, обьясни ка, свой бред ?

Объясните для начала, где вы нашли бред. К тому же, мы не знаем задачу, которую решает ТС.
1 сен 11, 22:48    [11215564]     Ответить | Цитировать Сообщить модератору
 Re: работа с таблицей, имя которой хранится в другой таблице  [new]
Запросий
Guest
step_ks
Объясните для начала, где вы нашли бред. К тому же, мы не знаем задачу, которую решает ТС.

Для начала попытайтесь обьяснить связь между вопросом топстартера и постом, который справедливо назван бредом.
1 сен 11, 22:58    [11215588]     Ответить | Цитировать Сообщить модератору
 Re: работа с таблицей, имя которой хранится в другой таблице  [new]
kDnZP
Member [заблокирован]

Откуда: ★[msg=16399436]★[msg=20850760]
Сообщений: 11289
Запросий
step_ks
Объясните для начала, где вы нашли бред. К тому же, мы не знаем задачу, которую решает ТС.

Для начала попытайтесь обьяснить связь между вопросом топстартера и постом, который справедливо назван бредом.

Скажите честно: "Вы считаете нормальным динамическое формирование имени таблицы, для того чтобы впоследствии это имя использовать в других динамических запросах?". Раз уж использовать динамику, то вполне логично использовать хранение имен таблиц в отдельной таблице-словаре. Очевидно и то, что нужно обеспечить уникальность этого имени.

Внимание вопросы: "Что вас так удивило? То что уникальность вполне может быть реализованна с помощью PK? Или то, что PK может быть составным (ну например хранить не только имена таблиц, но и мапинг полей)? В чем бред?"
1 сен 11, 23:06    [11215611]     Ответить | Цитировать Сообщить модератору
 Re: работа с таблицей, имя которой хранится в другой таблице  [new]
koJIo6ok
Member

Откуда: РБ
Сообщений: 950
володька трынькин
проектировщика я пристреливать не буду, ибо на самом деле базы спроектированы норм
я описал ситуацию упрощенно, чтобы не вдаваться в подробности. на самом деле имена таблиц не в таблице хранятся, а я их динамически формирую. как бы вопрос в том - как вот это сформированное название таблицы (в переменной varchar хранящееся) подставить в селект запрос?

ну если проектирование норм, тогда мб постановку вопроса или его реализацию стоить пересмотреть?
тк что-то тут определенно через опу ))
1 сен 11, 23:18    [11215634]     Ответить | Цитировать Сообщить модератору
 Re: работа с таблицей, имя которой хранится в другой таблице  [new]
iljy
Member

Откуда:
Сообщений: 8711
Запросий
iljy
Да ну? И почему же это "название таблицы" тупо не является частью первичного ключа, чтобы по нему можно было производить отбор как по обычному параметру из одной общей таблицы?


Ты, я вижу, по первичным ключам мастак ?
Будь добр, обьясни ка, свой бред ?

Уважаемый, вас в одном треде выпороли, так вы не угомонились и сюда приползли? Я мастак не только по первичным ключам, я еще умею проектировать базы. И я не вижу ни одной причины для использования множества таблиц с одинаковыми полями (этот вывод я экстраполирую из того, что ТС упомянул в качестве параметра только имя таблицы, но даже если это и не так - есть масса решений без использования динамики) и динамическим заданием имени. А иррелевантный неаргументированный бред несете вы.

Кстати, по-моему тема топика сползла в проектирование БД, может его туда и перенести?
1 сен 11, 23:23    [11215642]     Ответить | Цитировать Сообщить модератору
 Re: работа с таблицей, имя которой хранится в другой таблице  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31983
Запросий
step_ks
Объясните для начала, где вы нашли бред. К тому же, мы не знаем задачу, которую решает ТС.

Для начала попытайтесь обьяснить связь между вопросом топстартера и постом, который справедливо назван бредом.
На вопрос ТС исчерпывающе и полностью ответили в первом и втором посте.

Далее идут рассуждения на тему проектирования (возможно, неправильные, т.к. задача ТС неизвестна, но это уже другой вопрос). По этой теме пост iljy вполне уместен.
1 сен 11, 23:42    [11215685]     Ответить | Цитировать Сообщить модератору
 Re: работа с таблицей, имя которой хранится в другой таблице  [new]
sphinx_mv
Member [заблокирован]

Откуда:
Сообщений: 1672
Winnipuh
володька трынькин
проектировщика я пристреливать не буду, ибо на самом деле базы спроектированы норм
я описал ситуацию упрощенно, чтобы не вдаваться в подробности. на самом деле имена таблиц не в таблице хранятся, а я их динамически формирую. как бы вопрос в том - как вот это сформированное название таблицы (в переменной varchar хранящееся) подставить в селект запрос?


правильно, вова, только такой подход является универсальным, имен таблиц в таблице, кстати можно и сами запросы хранить в базе.
И потом читать их оттуда и выполнять. При этом приложение не надо менять, а только запросы.
И кстати апдейт, делете запросы тоже.
Я - за такой подход, а не консервативный, когда хардкодируются запросы.


Я тихонько офигеваю!
Оказывается, использование представлений, хранимых процедур и функций - "аццкий ацтой"!
И нужно "изобретать" некий "супер-движок" для хранения и выполнения основных запросов к таблицам с данными....

Написал "хитрое" представление, в приложении делаешь из него запрос, чтобы получить набор данных...
Написал не менее "хитрые" процедуры для вставки, обновления, удаления данных для этого набора данных...
Любой современный вменяемый сервер БД это поддерживает!
В любой момент времени внес изменения в логику представлений и процедур - и никакой перекомпиляции приложения не требуется.
Только если меняется набор отображаемых полей и список формальных параметров - но тут хочешь/не хочешь, но приложение пере-"хардкодить" придется при ЛЮБОМ варианте... При этом количество геморроя с использованием стандартных средств хорошо если всего только на порядок меньше, чем в изобретенном "велосипеде"...
2 сен 11, 00:19    [11215763]     Ответить | Цитировать Сообщить модератору
 Re: работа с таблицей, имя которой хранится в другой таблице  [new]
Запросий
Guest
Вот это ты поулыбал )

iljy
Уважаемый, вас в одном треде выпороли,

Кого-кого ? )) Не называй черное белым - там как раз наоборот - ламерье поумывалось )

iljy
Я мастак не только по первичным ключам, я еще умею проектировать базы.

Да, я это заметил ))
С огладки на содержание постов склоняюсь к мысли, что ты еще умеешь и старт-стоп сервиса из контекстного меню.
iljy
А иррелевантный неаргументированный бред несете вы.

Ну, если "сам дурак" для тебя самый удачный аргумент, то наверно и правда в ключах мастак..

iljy
И я не вижу ни одной причины для использования множества таблиц с одинаковыми полями

Ну так обьясни как ты связываешь эту мысль с своим вышенаписанным бредом:
iljy
Да ну? И почему же это "название таблицы" тупо не является частью первичного ключа, чтобы по нему можно было производить отбор как по обычному параметру из одной общей таблицы?
А как надежно отстрелить себе ногу вам уже сказали.
2 сен 11, 10:24    [11216545]     Ответить | Цитировать Сообщить модератору
 Re: работа с таблицей, имя которой хранится в другой таблице  [new]
kDnZP
Member [заблокирован]

Откуда: ★[msg=16399436]★[msg=20850760]
Сообщений: 11289
Запросий, вы какой-то буйный слишком. Неужель iljy обидел чем-то?

* Вообще-то у меня сомнений в знаниях iljy нет, он (как и ряд других людей) периодически показывают мне мои косяки и пробелы в знаниях. И это есть хорошо. Если вам есть, что сказать и вы имеете другое мнение по вопросу этой темы, то сформируйте и аргументируйте это мнение. Это будет полезно и интересно многим. Если же вы просто пришли поругаться, то зачем? Какой в этом смысл?
2 сен 11, 10:44    [11216674]     Ответить | Цитировать Сообщить модератору
 Re: работа с таблицей, имя которой хранится в другой таблице  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31983
kDnZP
Если же вы просто пришли поругаться, то зачем? Какой в этом смысл?
Как зачем? Поругаться. Это и есть цель :-)
2 сен 11, 10:48    [11216694]     Ответить | Цитировать Сообщить модератору
 Re: работа с таблицей, имя которой хранится в другой таблице  [new]
Shakill
Member

Откуда: мск
Сообщений: 1887
sphinx_mv
Только если меняется набор отображаемых полей и список формальных параметров - но тут хочешь/не хочешь, но приложение пере-"хардкодить" придется при ЛЮБОМ варианте... При этом количество геморроя с использованием стандартных средств хорошо если всего только на порядок меньше, чем в изобретенном "велосипеде"...


это не совсем так. видел несколько десктопных приложений на самописных движках-"конструкторах", требующие для изменения списка полей только добавления поля в таблицу с данными и соотв. записи в служебную таблицу с метаданными. запросы, формы отображения и т.п. приложение формировало на лету, перекомпиляция не требовалась. это удобно в тех случаях, когда заказчик требует возможность время от времени самому оперативно изменять структуру таблиц с пользовательскими данными (речь не о ключах).

конечно, с какой скоростью всё это работало и как поддерживалась целостность - вопросы отдельные.
2 сен 11, 10:49    [11216700]     Ответить | Цитировать Сообщить модератору
 Re: работа с таблицей, имя которой хранится в другой таблице  [new]
env
Member

Откуда: Россия, Москва
Сообщений: 7498
ТС,
по теме, сомневаюсь, что динамика в вашей задаче обоснована, но если уж вы не можете придумать иную архитектуру, то смотрите в сторону exec, либо смены архитектуры на EAV (и то и другое чаще всего не требуется в реальных задачах).

kDnZP
Если же вы просто пришли поругаться, то зачем? Какой в этом смысл?
2 сен 11, 11:28    [11216927]     Ответить | Цитировать Сообщить модератору
 Re: работа с таблицей, имя которой хранится в другой таблице  [new]
локи блоки
Guest
Запросий,

хер с ней с динамикой и с PK, главное - грохнуть кластерный!!!
2 сен 11, 11:36    [11216968]     Ответить | Цитировать Сообщить модератору
 Re: работа с таблицей, имя которой хранится в другой таблице  [new]
володя выноси
Guest
володька трынькин,

если от динамики никуда не деться - посмотрите в сторону кодогенерации - можно сделать процедуру с постоянным именем, тело ее генерить при изменении набора Table_1, Table_2.
на частых использованиях будет корректнее постоянной динамики.
2 сен 11, 11:43    [11217022]     Ответить | Цитировать Сообщить модератору
 Re: работа с таблицей, имя которой хранится в другой таблице  [new]
Shakill
Member

Откуда: мск
Сообщений: 1887
володя выноси, после того как пересоздал хранимку, ей права нужно назначить ещё
2 сен 11, 11:45    [11217039]     Ответить | Цитировать Сообщить модератору
 Re: работа с таблицей, имя которой хранится в другой таблице  [new]
володя выноси
Guest
Shakill,

ALTER?
2 сен 11, 11:46    [11217045]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2 3   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить