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

Откуда:
Сообщений: 183
Товарищи, подскажите, как сделать выбор источника (схемы идентичные) в зависимости от параметра в ХП

Можно сделать с помощью IF

IF param=0
BEGIN
  SELECT id, name
  FROM goods
  WHERE del=0
END
ELSE
BEGIN
  SELECT id, name
  FROM tovary
  WHERE del=0
END


но это громоздко, можно ли что либо организовать как в JS
ниже некорректный код, только в целях объяснения что имею в виду
SELECT id, name
  FROM <(param=0) ? goods : tovary>
  WHERE del=0


Спасибо!
17 апр 15, 16:14    [17530254]     Ответить | Цитировать Сообщить модератору
 Re: Выбор источника  [new]
Glory
Member

Откуда:
Сообщений: 104751
ilshatkin
но это громоздко,

А все универсальные вещи получаются
- громоздкими
- медленными
И у вас так же будет
https://www.sql.ru/faq/faq_topic.aspx?fid=104
17 апр 15, 16:18    [17530289]     Ответить | Цитировать Сообщить модератору
 Re: Выбор источника  [new]
Konst_One
Member

Откуда:
Сообщений: 11625
есди одинаковые типы полей в обеих табличках, то можно такой изврат:

declare @param int = 0;

select A.id, A.name FROM (select G.[id], G.[name] from goods G where @param = 0) A
UNION ALL
select B.id, B.name FROM (select T.[id], T.[name] from tovary T where @param <> 0) B
17 апр 15, 16:22    [17530323]     Ответить | Цитировать Сообщить модератору
 Re: Выбор источника  [new]
SQL2008
Member

Откуда: Москва
Сообщений: 4478
ilshatkin,

  SELECT id, name
  FROM goods WHERE del=0 AND @param = 0
  UNION ALL
  SELECT id, name
  FROM tovary WHERE del=0 AND @param = 1
17 апр 15, 16:22    [17530330]     Ответить | Цитировать Сообщить модератору
 Re: Выбор источника  [new]
SQL2008
Member

Откуда: Москва
Сообщений: 4478
ilshatkin
Товарищи, подскажите, как сделать выбор источника (схемы идентичные) в зависимости от параметра в ХП

Можно сделать с помощью IF

IF param=0
BEGIN
  SELECT id, name
  FROM goods
  WHERE del=0
END
ELSE
BEGIN
  SELECT id, name
  FROM tovary
  WHERE del=0
END


но это громоздко

Громоздко потому, что кривая архитектура.
Если набор полей идентичен, то данные нужно хранить в одной таблице, разделяя их параметром в одном из полей.
17 апр 15, 16:35    [17530443]     Ответить | Цитировать Сообщить модератору
 Re: Выбор источника  [new]
ilshatkin
Member

Откуда:
Сообщений: 183
Спасибо всем!
Да, все таки закинул все в одну таблицу с дополнительным полем
17 апр 15, 22:57    [17531971]     Ответить | Цитировать Сообщить модератору
 Re: Выбор источника  [new]
Mike_za
Member

Откуда: Москва
Сообщений: 1176
Склеить Динамический скл.
17 апр 15, 23:52    [17532122]     Ответить | Цитировать Сообщить модератору
 Re: Выбор источника  [new]
Mike_za
Member

Откуда: Москва
Сообщений: 1176
Если это две никак не связанные между собой сущности, то зря закинули.
17 апр 15, 23:53    [17532125]     Ответить | Цитировать Сообщить модератору
 Re: Выбор источника  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31986
Mike_za
Склеить Динамический скл.
Зачем тут динамика, таблицы известны, всё статично.
UNION ALL вполне нормально.
Mike_za
Если это две никак не связанные между собой сущности, то зря закинули.
Наверное, связанные, раз в одном запросе нужно получать, в зависимости от параметра?
18 апр 15, 02:02    [17532432]     Ответить | Цитировать Сообщить модератору
 Re: Выбор источника  [new]
ilshatkin
Member

Откуда:
Сообщений: 183
alexeyvg
Mike_za
Если это две никак не связанные между собой сущности, то зря закинули.
Наверное, связанные, раз в одном запросе нужно получать, в зависимости от параметра?


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

Следовательно, это все таки, связные сущности и склеиваются. просто склеивание повлекло дополнительные изменения в существующих запросах, а первоначально просто хотелось указывать источник и все на этом.
20 апр 15, 13:33    [17539229]     Ответить | Цитировать Сообщить модератору
 Re: Выбор источника  [new]
Glory
Member

Откуда:
Сообщений: 104751
ilshatkin
Понадобилось потому что для разных пользователей, удобнее разное структурирование товара. Так вот появился параметр в хранимых процедурах, который указывал как рисовать структуру и с какой структурой связывать товар при отображении.

А почему отображение информации влияет на структуру физического хранения этой информации ?
Вы тепреь под каждое "удобнее разное структурирование товара" будете делать отдельную таблицу ?
20 апр 15, 13:38    [17539273]     Ответить | Цитировать Сообщить модератору
 Re: Выбор источника  [new]
ilshatkin
Member

Откуда:
Сообщений: 183
Glory
ilshatkin
Понадобилось потому что для разных пользователей, удобнее разное структурирование товара. Так вот появился параметр в хранимых процедурах, который указывал как рисовать структуру и с какой структурой связывать товар при отображении.

А почему отображение информации влияет на структуру физического хранения этой информации ?
Вы тепреь под каждое "удобнее разное структурирование товара" будете делать отдельную таблицу ?


Отображение информации не влияет на структуру физического хранения этой информации. все с точностью наоборот.
Пишу же, что сделал склеиванием, отказавшись от доп таблицы. Предположительно в ближайшем будущем не понадобится дополнительные структуры, но так как сделал склеиванием, то этот момент теперь легко решается.
20 апр 15, 14:01    [17539476]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить