Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / View / 11 сообщений из 11, страница 1 из 1
30.08.2021, 18:32
    #40093901
Caxa_ASS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
View
Всем привет.

У меня есть 80 таблиц. У данных таблиц все столбцы идентичны, как в названии, так и в типе данных. Для удобства и дальнейших механизмов были созданы представления, для всех таблиц, где указаны необходимые для вывода столбцы. Далее появилась необходимость создать одно главное представление, которое будет содержать всю информацию из всех view. Чтобы объединить все созданные представления, я воспользовался union и получил то что, хотел. Общее представление содержит около 1 млн. записей, все выводится, но появилась проблема поиска и вывода информации, когда я начинаю использовать where, and, in, like.

При манипулировании данными операторами, я получаю либо какую то часть информации, либо вовсе данные не возвращаются. Если применить такие же фильтры в основных таблицах или в отдельно созданных представлениях, данные возвращаются.
В чем может быть причина? Что сделано неверно?
...
Рейтинг: 0 / 0
30.08.2021, 18:36
    #40093903
msLex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
View
С большой долей вероятности, ошибка в скриптах view или запросов к ней.

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

Еще лучше, если будет репро, воспроизводящее потенциальную проблему.
...
Рейтинг: 0 / 0
30.08.2021, 20:17
    #40093919
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
View
Caxa_ASS
Чтобы объединить все созданные представления, я воспользовался union и получил то что, хотел.
Что, прямо так и писали, "union"?
...
Рейтинг: 0 / 0
30.08.2021, 20:26
    #40093921
Caxa_ASS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
View
alexeyvg
Caxa_ASS
Чтобы объединить все созданные представления, я воспользовался union и получил то что, хотел.
Что, прямо так и писали, "union"?


Да, так и написал ОДИН РАЗ -> union и все зациклил в Python.
...
Рейтинг: 0 / 0
30.08.2021, 20:37
    #40093924
Caxa_ASS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
View
msLex
С большой долей вероятности, ошибка в скриптах view или запросов к ней.

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

Еще лучше, если будет репро, воспроизводящее потенциальную проблему.


Вот таких представлений у меня 80 шт. Взял список таблиц из
Код: sql
1.
SELECT name FROM sys.Tables

, в Python создал тело одного представления и зациклил, добавляя имена таблиц и название view.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
create view [Table1_view] as select

    cast([Column1] as varchar(max)) as [Name],
    cast([Column2] as varchar(max)) as [ID],
    cast([Column3] as varchar(max)) as [Key],
    cast([Column4] as varchar(max)) as [Made],
    cast([Column5] as datetime) as [Date1],
    cast([Column6] as float) as [Min],
    cast([Column7] as float) as [Max],
    cast([Column8] as datetime) as [Date2],
    cast([Column9] as varchar(max)) as [Box],
    cast([Column10] as varchar(max)) as [Status],
    cast([Column11] as datetime) as [Date3],
    cast([Column12] as datetime) as [Date4]

from [Table1]
GO



Далее так же было создано тело для общего представления, в которое вошли все эти views, которое так же были созданы в цикле Python.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
create view [All view] as           
    select * from [Table1_view] 
    union
    select * from [Table2_view] 
    union
    select * from [Table3_view] 
    ......
    select * from [Table80_view]
go



Какой запрос я выполняю, все очень просто:
Код: sql
1.
select * from [All view] where [Made] is null
...
Рейтинг: 0 / 0
30.08.2021, 21:10
    #40093932
andy st
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
View
Caxa_ASS,
если вдруг в разных таблицах в наличии полностью совпадающие строки, то имеет смысл всё-таки влезть в документацию по SQL Server и почитать, что делает union и для чего придумали union all.
аналогично, у тех же in и like тоже есть моменты, которые надо знать до того, как соберешься их использовать
...
Рейтинг: 0 / 0
30.08.2021, 21:27
    #40093935
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
View
Caxa_ASS
Далее так же было создано тело для общего представления, в которое вошли все эти views, которое так же были созданы в цикле Python.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
create view [All view] as           
    select * from [Table1_view] 
    union
    select * from [Table2_view] 
    union
    select * from [Table3_view] 
    ......
    select * from [Table80_view]
go

Тог8да понятно, почему "я получаю либо какую то часть информации, либо вовсе данные не возвращаются"
...
Рейтинг: 0 / 0
30.08.2021, 22:47
    #40093942
Caxa_ASS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
View
alexeyvg
Caxa_ASS
Далее так же было создано тело для общего представления, в которое вошли все эти views, которое так же были созданы в цикле Python.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
create view [All view] as           
    select * from [Table1_view] 
    union
    select * from [Table2_view] 
    union
    select * from [Table3_view] 
    ......
    select * from [Table80_view]
go

Тог8да понятно, почему "я получаю либо какую то часть информации, либо вовсе данные не возвращаются"


Тогда будьте любезны, объяснить мне почему или, что я делаю не так.
...
Рейтинг: 0 / 0
30.08.2021, 23:46
    #40093945
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
View
Caxa_ASS,

А как Вы гарантируете, что под столбцом А таблицы 1 не будет находиться столбец Б таблицы2?
...
Рейтинг: 0 / 0
31.08.2021, 07:42
    #40093961
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
View
Caxa_ASS
alexeyvg
пропущено...
Тог8да понятно, почему "я получаю либо какую то часть информации, либо вовсе данные не возвращаются"

Тогда будьте любезны, объяснить мне почему или, что я делаю не так.
Вам тут уже написали.
union нужен, что бы "схлопнуть" результат, он не выводит повторяющиеся значения.
используйте union all
Ещё укажите схему таблиц, то есть пишите, например,
Код: sql
1.
select * from dbo.[Table1_view] 


(если схема dbo)
...
Рейтинг: 0 / 0
31.08.2021, 08:41
    #40093969
Caxa_ASS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
View
alexeyvg,

Спасибо!
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / View / 11 сообщений из 11, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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