powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Присоединение одной таблицы по нескольким полям
23 сообщений из 23, страница 1 из 1
Присоединение одной таблицы по нескольким полям
    #39807279
IceMystic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Суть вот в чем:
имеется таблица "Табель работ автомобилей"
В которой есть кроме всего прочего 31 поле со ссылками на другую таблицу (состояние автомобилей (в работе/ТО/Нет водителя/Ремонт и прочее)).
Возникла необходимость отчета за несколько месяцев по каждому автомобилю с количеством дней (по месяцам) с каждым статусом пример таблицы приложен.
Вопрос: как зацепить таблицу состояний к 31ому полю более гуманно, чем 31 раз использовать Union ?
...
Рейтинг: 0 / 0
Присоединение одной таблицы по нескольким полям
    #39807284
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гораздо гуманнее использовать 31 join.
...
Рейтинг: 0 / 0
Присоединение одной таблицы по нескольким полям
    #39807285
IceMystic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
aleks222Гораздо гуманнее использовать 31 join.
Join не подходит, потому что мне нужно добавить не ещё одно поле, а ещё одно значение уже существующего поля.
Мне же в конце нужна сводная таблица с количеством дней по каждому статусу, а не куча полей с повторяющимися статусами.
...
Рейтинг: 0 / 0
Присоединение одной таблицы по нескольким полям
    #39807288
IceMystic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
IceMysticСуть вот в чем:
имеется таблица "Табель работ автомобилей"
В которой есть кроме всего прочего 31 поле со ссылками на другую таблицу (состояние автомобилей (в работе/ТО/Нет водителя/Ремонт и прочее)).
Возникла необходимость отчета за несколько месяцев по каждому автомобилю с количеством дней (по месяцам) с каждым статусом пример таблицы приложен.
Вопрос: как зацепить таблицу состояний к 31ому полю более гуманно, чем 31 раз использовать Union ?
Сам дурак, фигню написал)
Хотел написать Apply, а написал Union :(
...
Рейтинг: 0 / 0
Присоединение одной таблицы по нескольким полям
    #39807290
IceMystic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
IceMysticIceMysticСуть вот в чем:
имеется таблица "Табель работ автомобилей"
В которой есть кроме всего прочего 31 поле со ссылками на другую таблицу (состояние автомобилей (в работе/ТО/Нет водителя/Ремонт и прочее)).
Возникла необходимость отчета за несколько месяцев по каждому автомобилю с количеством дней (по месяцам) с каждым статусом пример таблицы приложен.
Вопрос: как зацепить таблицу состояний к 31ому полю более гуманно, чем 31 раз использовать Union ?
Сам дурак, фигню написал)
Хотел написать Apply, а написал Union :(

А не, я всё правильно напиасал :)
Чет уже голова совсем не соображает :)
...
Рейтинг: 0 / 0
Присоединение одной таблицы по нескольким полям
    #39807294
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для ответа требуются:
1. Структура исходных таблиц.
2. Структура результирующей таблицы.
...
Рейтинг: 0 / 0
Присоединение одной таблицы по нескольким полям
    #39807295
IceMystic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
982183Для ответа требуются:
1. Структура исходных таблиц.
2. Структура результирующей таблицы.
Какую информацию Вы подразумеваете под структурой таблицы?
...
Рейтинг: 0 / 0
Присоединение одной таблицы по нескольким полям
    #39807296
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы не знаете что такое таблицы или что такие их структура?
...
Рейтинг: 0 / 0
Присоединение одной таблицы по нескольким полям
    #39807306
IceMystic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
982183Вы не знаете что такое таблицы или что такие их структура?
Я не знаю, что именно Вам нужно под этой информацией...
Если описание полей таблиц, то их там больше 500
...
Рейтинг: 0 / 0
Присоединение одной таблицы по нескольким полям
    #39807311
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вам нужен некий отчет.
Этот отчет делается на основании некой таблицы. (Которая имеет некую структуру)
Эта таблица формируется из других таблиц (имеющих свою структуру)
Достаточно описать поля, значимые для отчета и/или имеющие значения для связи таблиц.
...
Рейтинг: 0 / 0
Присоединение одной таблицы по нескольким полям
    #39807314
s_ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IceMysticСуть вот в чем:
имеется таблица "Табель работ автомобилей"
В которой есть кроме всего прочего 31 поле со ссылками на другую таблицу (состояние автомобилей (в работе/ТО/Нет водителя/Ремонт и прочее)).
Возникла необходимость отчета за несколько месяцев по каждому автомобилю с количеством дней (по месяцам) с каждым статусом пример таблицы приложен.
Вопрос: как зацепить таблицу состояний к 31ому полю более гуманно, чем 31 раз использовать Union ?
Я правильно понимаю - у вас в таблице отдельные поля для января, февраля и т.д.? Или это вы отчет такой сделали?

Если отдельные поля - то ответ очень простой - нанять специалиста.
...
Рейтинг: 0 / 0
Присоединение одной таблицы по нескольким полям
    #39807331
IceMystic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
s_ustinovIceMysticСуть вот в чем:
имеется таблица "Табель работ автомобилей"
В которой есть кроме всего прочего 31 поле со ссылками на другую таблицу (состояние автомобилей (в работе/ТО/Нет водителя/Ремонт и прочее)).
Возникла необходимость отчета за несколько месяцев по каждому автомобилю с количеством дней (по месяцам) с каждым статусом пример таблицы приложен.
Вопрос: как зацепить таблицу состояний к 31ому полю более гуманно, чем 31 раз использовать Union ?
Я правильно понимаю - у вас в таблице отдельные поля для января, февраля и т.д.? Или это вы отчет такой сделали?

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

в табеле есть ссылка на каталог авто, поле с годом табеля, поле с месяцем табеля и ещё 31 поле с ссылками на статус на каждый день.
ссылка[1]
ссылка[2]
ссылка[2]
ссылка[2]
ссылка[2]
ссылка[2]
ссылка[2]
Подобную стуктуру таблицы придумывал не я.
...
Рейтинг: 0 / 0
Присоединение одной таблицы по нескольким полям
    #39807334
IceMystic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
s_ustinovIceMysticСуть вот в чем:
имеется таблица "Табель работ автомобилей"
В которой есть кроме всего прочего 31 поле со ссылками на другую таблицу (состояние автомобилей (в работе/ТО/Нет водителя/Ремонт и прочее)).
Возникла необходимость отчета за несколько месяцев по каждому автомобилю с количеством дней (по месяцам) с каждым статусом пример таблицы приложен.
Вопрос: как зацепить таблицу состояний к 31ому полю более гуманно, чем 31 раз использовать Union ?
Я правильно понимаю - у вас в таблице отдельные поля для января, февраля и т.д.? Или это вы отчет такой сделали?

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

в табеле есть ссылка на каталог авто, поле с годом табеля, поле с месяцем табеля и ещё 31 поле с ссылками на статус на каждый день.
ссылка[1] ссылается на статус "нет водителя"
ссылка[2] ссылается на статус "ремонт"
ссылка[3] ссылается на статус "командировка"
ссылка[4] ссылается на статус "нет работы"
ссылка[5] ссылается на статус "на линии"
ссылка[6] ссылается на статус "на линии"
ссылка[7] ссылается на статус "нет водителя"
...
На выходе кроме прочих данных по авто должна быть информация по каждой машине о количестве соответствующих статусов за месяц
т.е нет водителя - 2
ремонт - 1
командировка - 1
нет работы - 1
на линии - 2


поскольку запись в табеле делается не на каждый день, а одна на весь месяц - пока есть две идеи... Либо цеплять 31 синоним каталога статусов к табелю, либо 31 раз писать union и в каждом новом цеплять каталог статусов к новому полю.
...
Рейтинг: 0 / 0
Присоединение одной таблицы по нескольким полям
    #39807335
s_ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IceMystic
в табеле есть ссылка на каталог авто, поле с годом табеля, поле с месяцем табеля и ещё 31 поле с ссылками на статус на каждый день .
ссылка[1]
ссылка[2]
ссылка[2]
ссылка[2]
ссылка[2]
ссылка[2]
ссылка[2]
Подобную стуктуру таблицы придумывал не я.
Взять паяльник и/или утюг и вдумчиво поспрашивать у того, кто это придумал - ЗАЧЕМ он так?!?!!!

Проблему не решит, но легче станет.

Решение проблемы - заменить эти 33 поля на одно поле - дата. Всё остальное будет мучительно больно и неприятно.
...
Рейтинг: 0 / 0
Присоединение одной таблицы по нескольким полям
    #39807336
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IceMysticВозникла необходимость отчета за несколько месяцев по каждому автомобилю с количеством дней (по месяцам) с каждым статусомСделать unpivot, потом join, и посчитать.
...
Рейтинг: 0 / 0
Присоединение одной таблицы по нескольким полям
    #39807337
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
s_ustinovIceMysticв табеле есть ссылка на каталог авто, поле с годом табеля, поле с месяцем табеля и ещё 31 поле с ссылками на статус на каждый день .
ссылка[1]
ссылка[2]
ссылка[2]
ссылка[2]
ссылка[2]
ссылка[2]
ссылка[2]
Подобную стуктуру таблицы придумывал не я.
Взять паяльник и/или утюг и вдумчиво поспрашивать у того, кто это придумал - ЗАЧЕМ он так?!?!!!Обычно такое получается, когда секретарша/сэйл/etc доводит свой эксель-файл до уровня используемой подразделением базы данных.

Конечно, более правильно это переделать.
...
Рейтинг: 0 / 0
Присоединение одной таблицы по нескольким полям
    #39807339
IceMystic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alexeyvgs_ustinovпропущено...

Взять паяльник и/или утюг и вдумчиво поспрашивать у того, кто это придумал - ЗАЧЕМ он так?!?!!!Обычно такое получается, когда секретарша/сэйл/etc доводит свой эксель-файл до уровня используемой подразделением базы данных.

Конечно, более правильно это переделать.

Безусловно, в в данной таблице уже ОЧЕНЬ много записей, и так просто это не переделать.
...
Рейтинг: 0 / 0
Присоединение одной таблицы по нескольким полям
    #39807340
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IceMysticalexeyvgпропущено...
Обычно такое получается, когда секретарша/сэйл/etc доводит свой эксель-файл до уровня используемой подразделением базы данных.

Конечно, более правильно это переделать.

Безусловно, в в данной таблице уже ОЧЕНЬ много записей, и так просто это не переделать.В смысле? Как это зависит от количества записей?
Это зависит от количества запросов, это да. Много ли надо переписывать.
...
Рейтинг: 0 / 0
Присоединение одной таблицы по нескольким полям
    #39807341
s_ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IceMysticalexeyvgпропущено...
Обычно такое получается, когда секретарша/сэйл/etc доводит свой эксель-файл до уровня используемой подразделением базы данных.

Конечно, более правильно это переделать.

Безусловно, в в данной таблице уже ОЧЕНЬ много записей, и так просто это не переделать.
Переделать - это самый простой вариант.
Я не говорю, что это просто. Перелить все существующие записи в новую таблицу - задача простая, но там, уверен, еще в куче мест переделать надо.
Но без переделки геморроя будет существенно больше.
...
Рейтинг: 0 / 0
Присоединение одной таблицы по нескольким полям
    #39807344
IceMystic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alexeyvgIceMysticпропущено...


Безусловно, в в данной таблице уже ОЧЕНЬ много записей, и так просто это не переделать.В смысле? Как это зависит от количества записей?
Это зависит от количества запросов, это да. Много ли надо переписывать.

В таком формате записи ведутся с 2008 года.
На основе этих таблиц создано куча интерфейсов и отчетных форм.
Я начал сопровождать это с прошлого года и потребовался новый отчет формата, который я описал.
Его можно написать в формате кучи маленьких запросиков методами, которые я написал выше но это будет довольно большая стена текста, вот я и хотел поинтересоваться нет ли более адекватных методов.

Если переделывать таблицу - это нужно будет переделывать почти всё, что было написано ранее, до меня, разбираться в куче форм и отлаживать на тестовой базе.
На это, к сожалению, сейчас совсем нет времени.
...
Рейтинг: 0 / 0
Присоединение одной таблицы по нескольким полям
    #39807345
s_ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IceMystic,
Представьте, что вам надо найти неделю (не месяц!) за последний год, в которую было максимальное количество недоступности автомобиля из-за отсутствия водителя. Или недели, в которые все автомобили были доступны всё время.
С подобной структурой данных такие отчеты делать - удовольствие сильно ниже среднего. Не говоря о том, что тормозить будут.
...
Рейтинг: 0 / 0
Присоединение одной таблицы по нескольким полям
    #39807346
s_ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IceMysticalexeyvgпропущено...
В смысле? Как это зависит от количества записей?
Это зависит от количества запросов, это да. Много ли надо переписывать.

В таком формате записи ведутся с 2008 года.
На основе этих таблиц создано куча интерфейсов и отчетных форм.
Я начал сопровождать это с прошлого года и потребовался новый отчет формата, который я описал.
Его можно написать в формате кучи маленьких запросиков методами, которые я написал выше но это будет довольно большая стена текста, вот я и хотел поинтересоваться нет ли более адекватных методов.

Если переделывать таблицу - это нужно будет переделывать почти всё, что было написано ранее, до меня, разбираться в куче форм и отлаживать на тестовой базе.
На это, к сожалению, сейчас совсем нет времени.
Ну сделайте индексированное представление этой таблицы с нормальной структурой данных (одно поле дата).
И работайте уже с ним.
...
Рейтинг: 0 / 0
Присоединение одной таблицы по нескольким полям
    #39807348
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IceMysticв табеле есть ссылка на каталог авто, поле с годом табеля, поле с месяцем табеля и ещё 31 поле с ссылками на статус на каждый день.
ссылка[1] ссылается на статус "нет водителя"
ссылка[2] ссылается на статус "ремонт"
ссылка[3] ссылается на статус "командировка"
ссылка[4] ссылается на статус "нет работы"
ссылка[5] ссылается на статус "на линии"
ссылка[6] ссылается на статус "на линии"
ссылка[7] ссылается на статус "нет водителя"
...
На выходе кроме прочих данных по авто должна быть информация по каждой машине о количестве соответствующих статусов за месяц
т.е нет водителя - 2
ремонт - 1
командировка - 1
нет работы - 1
на линии - 2Примерно так:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
declare @t table (id int primary key, y int, m int, day1 int, day2 int, day3 int, day4 int, day5 int);
insert into @t
values
 (1, 2019, 1, 1, 2, 3, 1, 3),
 (2, 2019, 2, 2, 1, 3, 3, 3);
 
select
 a.id, a.y, a.m, b.*
from
 @t a cross apply
 (
  select
   p.[1] as [state1 name], p.[2] as [state2 name], p.[3] as [state3 name]
  from
   (values (a.day1), (a.day2), (a.day3), (a.day4), (a.day5)) d(state)
   pivot
   (
    count(d.state) for d.state in ([1], [2], [3])
   ) p
 ) b;
...
Рейтинг: 0 / 0
23 сообщений из 23, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Присоединение одной таблицы по нескольким полям
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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