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

Откуда: Minsk Power Station
Сообщений: 470
Приветствую,

не подскажете, делают ли так вообще, запрос из БД данных не в виде строк, а виде готового документа?
Постараюсь объяснить, значит, есть такая структура таблиц:
declare @Teachers table([ID] int, [Name] nvarchar(50))
insert into @Teachers(ID, [Name])
select 1, N'Антонина Сергеевна' union all
select 2, N'Ольга Петровна' union all
select 3, N'Станислав Фёдорович' 

declare @Classes table(Class int, Teacher int)
insert into @Classes(Class, Teacher)
select 1, 1 union all
select 4, 2 union all
select 5, 3

declare @Pupils table(ClassID int, [Name] nvarchar(10))
insert into @Pupils(ClassID, [Name])
select 1, N'Ваня' union all
select 1, N'Петя' union all
select 1, N'Жора' union all
select 4, N'Даша' union all
select 4, N'Маша' union all
select 5, N'Таня'

чтобы получить данные о классе, его классной, и учениках, надо сделать примерно такой запрос:
SELECT p.[Name], p.[ClassID], t.[Name] as Teacher 
FROM @Pupils p inner join 
	@Classes c on p.ClassID = c.Class inner join 
	@Teachers t on c.Teacher = t.ID

вернутся данные:
Name	ClassID	Teacher
Ваня 1 Антонина Сергеевна
Петя 1 Антонина Сергеевна
Жора 1 Антонина Сергеевна
Даша 4 Ольга Петровна
Маша 4 Ольга Петровна
Таня 5 Станислав Фёдорович

в принципе, ничего страшного, когда данных, которые должны быть общими, немного. Но когда шапка большая, и с каждой записью её тянуть, на мой взгляд, расточительно. Поэтому, вопрос, может разработчики зачастую группируют общую часть, и возвращают в виде какой-то структуры? Ведь, тут какие плюсы: а) перебирать на клиенте не надо; б) можно сразу вставлять в виде обрамлённого тегами куска текста, например, на странице сайта; в) передаётся куда меньший объём данных с сервера.

Т. е., иными словами, чтобы сервер возвращал сгруппированные данные в виде блока:
____________________________________
|1 класс |
|Руководитель: Антонина Сергеевна |
|Ученики: Ваня, Петя, Жора |
|__________________________________|
____________________________________
|4 класс |
|Руководитель: Ольга Петровна |
|Ученики: Даша, Маша |
|__________________________________|
____________________________________
|5 класс |
|Руководитель: Станислав Фёдорович |
|Ученики: Таня |
|__________________________________|

или моветон?
10 авг 19, 17:54    [21946160]     Ответить | Цитировать Сообщить модератору
 Re: Возвращают ли данные из БД в виде текстового документа?  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36342
palladin600
а виде готового документа

pdf'ку что ли?
10 авг 19, 19:36    [21946216]     Ответить | Цитировать Сообщить модератору
 Re: Возвращают ли данные из БД в виде текстового документа?  [new]
PizzaPizza
Member

Откуда:
Сообщений: 276
Вы хотите собрать строку с учениками для класса и руководителя?


класс руководитель ученики
1Антонина СергеевнаВаня Петя Жора
4Ольга ПетровнаДаша Маша
5Станислав ФёдоровичТаня


Или реально вам надо все эти повторяющиеся Руководитель, ученики, класс в каждом блоке?

Вообще форматирование проще и эффективнее делать на клиенте. База данных для данных.
10 авг 19, 19:43    [21946217]     Ответить | Цитировать Сообщить модератору
 Re: Возвращают ли данные из БД в виде текстового документа?  [new]
palladin600
Member

Откуда: Minsk Power Station
Сообщений: 470
Гавриленко Сергей Алексеевич
pdf'ку что ли?
не, не совсем, возвращается как текст, но объеденённый в одном поле.

PizzaPizza
Или реально вам надо все эти повторяющиеся Руководитель, ученики, класс в каждом блоке?
нет, как раз-таки не надо. Пока думаю.

Не создав топика не мог сформулировать идею ), в частности даже просто для себя, не понимал, есть ли смысл вообще развивать идею в эту сторону.
10 авг 19, 19:58    [21946222]     Ответить | Цитировать Сообщить модератору
 Re: Возвращают ли данные из БД в виде текстового документа?  [new]
Gator
Member

Откуда: Москва
Сообщений: 14672
Документ это не только текст, но и формат [файла], кодировка, форматирование текста и прочие фишки.
Для этого существуют средства. Потоки, блобы, xml
https://docs.microsoft.com/ru-ru/sql/relational-databases/blob/binary-large-object-blob-data-sql-server?view=sql-server-2017
10 авг 19, 20:23    [21946232]     Ответить | Цитировать Сообщить модератору
 Re: Возвращают ли данные из БД в виде текстового документа?  [new]
Massa52
Member

Откуда:
Сообщений: 349
palladin600,
Гоните тогда уже сразу в HTML(там уже все и форматирование и текст).
Примеров море - https://www.google.com/search?q=TSQL HTML encode&rlz=1C1GGRV_enAU751AU751&oq=TSQL HTML encode&aqs=chrome..69i57j0.15171j0j7&sourceid=chrome&ie=UTF-8
11 авг 19, 02:16    [21946319]     Ответить | Цитировать Сообщить модератору
 Re: Возвращают ли данные из БД в виде текстового документа?  [new]
Minamoto
Member

Откуда: Москва
Сообщений: 1011
palladin600, так возвращайте шапку отдельным датасетом, а детализацию - отдельным. Связав по идентификатору, который сильно короче, чем строка.

Еще один вариант - сразу на стороне SQL Server'а собирать XML или JSON, там будет увеличение объема за счет служебных символов и названий полей, но сокращение за счет убирания дублей значений.
12 авг 19, 09:36    [21946816]     Ответить | Цитировать Сообщить модератору
 Re: Возвращают ли данные из БД в виде текстового документа?  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 6639
palladin600,

получить готовый документ можно при помощи отчета и Reporting Services.
12 авг 19, 11:23    [21946926]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить