02.07.2015, 12:25 | #1 |
NavAx
|
View on Query
Может кто не знает.
Понадобилось сделать View с двумя таблицами объедененными по notexists, View так не может. Но как оказалось (раньше не делал) View можно организовать по Query. PS. Ну и наверняка можно развить дальше, View на нескольких View, которые на Query. |
|
|
За это сообщение автора поблагодарили: Logger (3). |
02.07.2015, 12:48 | #2 |
Moderator
|
У меня на эту тему любимая задачка есть - для продвинутых специалистов на собеседованиях: Написать update_recordset,который для каждой номенклатуры обновляет в inventTableModule цену последней закупки. Решается с помощью view...
|
|
03.07.2015, 07:11 | #3 |
Мрачный тип
|
Чисто академический интерес - не подскажет ли кто, можно ли разрешить вопрос в следующей ситуации:
-есть Query с типом запроса Union и типом объединения датасорсов UnionAll (2 датасорса) -есть View на этом Query (поле unionAllBranchId доступно, т.е. идентификация источника строки теоретически возможна) -есть форма с гридом, где источником данных выступает этот View Как-то можно определить источник данных (исходную таблицу) в каждой строке в форме ? Вся банда запросных объектов на форме считает, что источник данных запроса один и это View. На самом View структура метаданных, включающая в себя сведения о структуре исходного запроса, недоступна для анализа и использования в собственных методах. Экземпляр DictView, созданный на базе этого View, тоже считает, что источник данных у него всего один.
__________________
Мы летаем, кружимся, нагоняем ужасы ... Последний раз редактировалось TasmanianDevil; 03.07.2015 в 07:40. |
|
03.07.2015, 07:55 | #4 |
Участник
|
View полностью инкапсулирует (прячет) в себе свою реализацию. И это правильно. Добавляйте в список полей view дополнительное поле для идентификации источника.
|
|
|
За это сообщение автора поблагодарили: TasmanianDevil (3). |
03.07.2015, 08:29 | #5 |
Мрачный тип
|
Да оно уже есть - unionAllBranchId.
Просто хотелось бы без хардкодинга по значению этого поля определять источник. Но все равно спасибо.
__________________
Мы летаем, кружимся, нагоняем ужасы ... |
|
03.07.2015, 11:13 | #6 |
Administrator
|
Цитата:
Специально приведен пример для View на Union на MSDN: https://msdn.microsoft.com/EN-US/library/gg846293.aspx Цитата:
private static server str Comp_Party_LifeTime(int branchNum)
{ switch (branchNum) { case 1: break; case 2: break; } Цитата:
CREATE VIEW "DBO".TESTVIEWUNION
AS SELECT A.ACCOUNTNUM AS ACCOUNTNUM ,A.PARTY AS PARTY ,A.DATAAREAID AS DATAAREAID ,A.RECID AS RECID , (CAST (((SELECT top 1 bg.DiscNoticeDelayDays from BankGroup as bg where bg.DiscNoticeDelayDays <= (123 + A.PARTY) /*1*/ )) AS INT)) AS COMPUTEDINT FROM CUSTTABLE A UNION SELECT A.CUSTACCOUNT ,A.LIFETIME ,A.DATAAREAID ,A.RECID , (CAST (((SELECT top 1 bg.DiscNoticeDelayDays from BankGroup as bg where bg.DiscNoticeDelayDays <= (123 + A.LIFETIME) /*2*/ )) AS INT)) AS COMPUTEDINT FROM ASSETBOOK A
__________________
Возможно сделать все. Вопрос времени |
|
|
За это сообщение автора поблагодарили: Logger (1), skuull (1). |
Теги |
query, view |
|
|