Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
можно ли в SELECT-е в разделе FROM использовать переменные?
|
|||
|---|---|---|---|
|
#18+
ситуация следующая. у меня есть n SELECT-ов. выбираемые поля, условия выборки, все одинаковое. разные только FROM, данные берутся из разных таблиц, в зависимости от входящих параметров (эти SELECT-ы в StoredProcedure). Я хотел бы из SELECT-ов получить один, что то типа: \n... declare @table varchar(20) if @param = 1 set @table = 'dbo.table1' if @param = 2 set @table = 'dbo.table2' ... if @param = n set @table = 'dbo.tableN' select ... from @table where... ... На ум приходит только через "собрать строчку и через exec(@SQLstring)". но мне не нравится, по моему, еще больший геморой, чем с этими SELECT-ами нутром чую, что как то можно извратнуться через системные таблицы (ну там через, sysobjects и т.д.), но как, не знаю... ...или через переменные, как я привел для примера выше. есть у кого идеи? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2001, 04:54 |
|
||
|
можно ли в SELECT-е в разделе FROM использовать переменные?
|
|||
|---|---|---|---|
|
#18+
в данном случае "нутро" ошибается Посмотрите функцию sp_executesql - это тот же exec, но туда можно передавать параметры. Может пригодиться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2001, 06:42 |
|
||
|
можно ли в SELECT-е в разделе FROM использовать переменные?
|
|||
|---|---|---|---|
|
#18+
Указывать таблицу во from через переменную не получится... Вообще, можно написать такой запрос: select ... from (select * from dbo.table1 where @param = 1 union select * from dbo.table2 where @param = 2 union ... union select * from dbo.tableN where @param = N) t where <общее условие> Работать должно быстро. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2001, 07:38 |
|
||
|
можно ли в SELECT-е в разделе FROM использовать переменные?
|
|||
|---|---|---|---|
|
#18+
А еще можно создать view на основе объединения всех таблиц, если конечно они имеют одинаковую структуру . Тогда можно в запросах использовать не перечень таблиц, а view ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2001, 07:55 |
|
||
|
можно ли в SELECT-е в разделе FROM использовать переменные?
|
|||
|---|---|---|---|
|
#18+
Да вот как я понял Автор имелл в виду, можно ли запросить типа: select * from @TableName, а @TableName - множество таблиц, которые не перечислишь в Union'e... Насколько я знаю, это действительно можно сделать только через EXEC(@SQLstring). А было бы классно напрямую! А вот еще задачка: нельзя ли в качестве содержимого секции FROM сделать вызов функции, возвращающей набор записей, типа: select * FROM (EXEC MyProcedure) ??? Такое бывает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2001, 04:57 |
|
||
|
можно ли в SELECT-е в разделе FROM использовать переменные?
|
|||
|---|---|---|---|
|
#18+
2 Extravert Такое бывает в SQL2000 Там есть функции ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2001, 06:03 |
|
||
|
можно ли в SELECT-е в разделе FROM использовать переменные?
|
|||
|---|---|---|---|
|
#18+
2 Glory: Не совсем понял, что за view ты предлагаешь сделать? Можно ли пояснить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2001, 08:01 |
|
||
|
можно ли в SELECT-е в разделе FROM использовать переменные?
|
|||
|---|---|---|---|
|
#18+
2 MessMaker Отвечаю заместо Glory Вид примерно такой: CREATE SuperView As select 1 param, * from dbo.table1 union select 2,* from dbo.table2 union ... union select n,* from dbo.tableN хотя Ваше решение мне тоже понравилось ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2001, 08:19 |
|
||
|
можно ли в SELECT-е в разделе FROM использовать переменные?
|
|||
|---|---|---|---|
|
#18+
зато короче ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2001, 10:03 |
|
||
|
можно ли в SELECT-е в разделе FROM использовать переменные?
|
|||
|---|---|---|---|
|
#18+
Extravert проблема несколько иная. у меня Stored Precedure возвращает некий select, и в зависимости от входящих параметров этот select берется из разных таблиц. Сейчас это реализовано через if @param = 1 ..., т.е. получается большая куча практически одинаковых select-ов, разница только в разделе from. Это работает, но мне не нравится - не очень удобочитаемо. А если мне еще поле какое нибудь нужно в select добавить? Его же надо будет не забыть в каждый select запихнуть . Короче, при редактирования такой процедуры я испытываю дискомфорт. Лень - мать прогресса!!! :D :D :D SergSuper А вот насчет функций - это очень интересно! Можно поподробней? ЗЫ Блин, пора наверно, книжку купить по MSSQL2000 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2001, 11:29 |
|
||
|
можно ли в SELECT-е в разделе FROM использовать переменные?
|
|||
|---|---|---|---|
|
#18+
Пример из БОЛ, надеюсь принцип будет понятен CREATE FUNCTION LargeOrderShippers ( @FreightParm money ) RETURNS @OrderShipperTab TABLE ( ShipperID int, ShipperName nvarchar(80), OrderID int, ShippedDate datetime, Freight money ) AS BEGIN INSERT @OrderShipperTab SELECT S.ShipperID, S.CompanyName, O.OrderID, O.ShippedDate, O.Freight FROM Shippers AS S INNER JOIN Orders AS O ON S.ShipperID = O.ShipVia WHERE O.Freight > @FreightParm RETURN END In this function, the local return variable name is @OrderShipperTab. Statements in the function body insert rows into the variable @OrderShipperTab to build the table result returned by the function. This query references the table returned by the function in its FROM clause: SELECT * FROM LargeOrderShippers( $500 ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2001, 12:32 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=32010625&tid=1826015]: |
0ms |
get settings: |
8ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
21ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
| others: | 221ms |
| total: | 316ms |

| 0 / 0 |
