Алгоритм

RuslanSharipov
Дата: 12.05.2015 14:52:40
Доброго времени суток. Задача такова:
Данные о человеке находятся в трех таблицах по частям (А,В,С). При изменении сведений об этом человеке изменения и время изменения попадают соответственно в таблицы (А1,В1,С1) при этом изменения вносятся только в ту таблицу которой они непосредственно касаются.
Порядок действий:
1)Создали нового человека
2)Внесли изменения касающиеся таблицы В1
3)Внесли изменения касающиеся таблицы С1
4)Внесли изменения касающиеся таблицы В1
5)Внесли изменения касающиеся таблицы А1

Мне нужно объединив эти три таблицы получить таблицу с пошаговыми действиями над этим человеком:

К примеру:
A1
13:08:21
13:14:07
B1
13:08:21
13:10:38
13:13:35
C1
13:08:21
13:12:25

Итог:
13:08:21+13:08:21+13:08:21
13:08:21+13:10:38+13:08:21
13:08:21+13:10:38+13:12:25
13:08:21+13:13:35+13:12:25
13:14:07+13:13:35+13:12:25

Не могу никак понять как их правильно их объединить.
Добрый Э - Эх
Дата: 12.05.2015 15:03:55
RuslanSharipov,

юзабильный набор репрезентативных тестовых данных, желаемый вид результата на них повысило бы шанс на более полный и правильный ответ.
А так, видbтся, что тебе нужен FULL JOIN по нумерованным row_number-ом таблицам с протяжкой результатов...
RuslanSharipov
Дата: 12.05.2015 15:11:51
Ну к примеру: Пришел новый клиент и мы записали данные о нем в нашу базу таким образом что в таблице А хранится фамилия, В-имя, С-Отчество. При этом у нас есть так сказать логи (А1, В1, С1) в которых хранятся изменения и время изменений. Записали мы его как Иванов Иван Иванович:
Содержимое таблиц:
А-Иванов
В-Иван
С-Иванович
А1-Иванов 12.05.2015
В1-Иван 12.05.2015
С1-Иванович 12.05.2015
Затем 13.05.2015 мы изменили данные на Иванов Иван Сидорович, тогда содержимое таблиц:
А-Иванов
В-Иван
С-Сидорович
А1-Иванов 12.05.2015
В1-Иван 12.05.2015
С1-Иванович 12.05.2015, Сидорович 13.05.2015
Поменяли 14.05.2015 на Петров Иван Сидорович
А-Петров
В-Иван
С-Сидорович
А1-Иванов 12.05.2015, Петров 14.05.2015
В1-Иван 12.05.2015
С1-Иванович 12.05.2015, Сидорович 13.05.2015
и т.д.
Нам необходимо просмотреть всю цепочку изменений по этому клиенту
Cygapb-007
Дата: 12.05.2015 15:15:26
RuslanSharipov,

declare @A1 table (id int identity primary key, tm time);
insert @A1 (tm) values ('13:08:21'),('13:14:07');

declare @B1 table (id int identity primary key, tm time);
insert @B1 (tm) values ('13:08:21'),('13:10:38'),('13:13:35');

declare @C1 table (id int identity primary key, tm time);
insert @C1 (tm) values ('13:08:21'),('13:12:25');

select row_number()over(order by (select 1))npp
  , *
  , max(iif(typ='a',tm,null))over(order by tm,typ)a
  , max(iif(typ='b',tm,null))over(order by tm,typ)b
  , max(iif(typ='c',tm,null))over(order by tm,typ)c
from (
  select 'a' typ, tm from @A1
  union all
  select 'b' typ, tm from @B1
  union all
  select 'c' typ, tm from @C1
  )u
order by u.tm, u.typ
npptyptmabc
1a13:08:21.00013:08:21.000NULLNULL
2b13:08:21.00013:08:21.00013:08:21.000NULL
3c13:08:21.00013:08:21.00013:08:21.00013:08:21.000
4b13:10:38.00013:08:21.00013:10:38.00013:08:21.000
5c13:12:25.00013:08:21.00013:10:38.00013:12:25.000
6b13:13:35.00013:08:21.00013:13:35.00013:12:25.000
7a13:14:07.00013:14:07.00013:13:35.00013:12:25.000
RuslanSharipov
Дата: 12.05.2015 15:39:21
Cygapb-007, я наверное не совсем правильно сформулировал задачу в первый раз. Есть идеи как реализовать то что было написано после этого?
Добрый Э - Эх
Дата: 12.05.2015 15:45:17
RuslanSharipov
Cygapb-007, я наверное не совсем правильно сформулировал задачу в первый раз. Есть идеи как реализовать то что было написано после этого?
ещё раз:
Я же
юзабильный набор репрезентативных тестовых данных, желаемый вид результата на них
при этом не гнушись использовать теги SRC (для выделения кода) и CSV (для формирования внешнего вида входных и выходных данных).
А то об твои сообщения глаз ломается, что напрочь отбивает желание даже пытаться понять, чего тебе надо, не говоря уже о том, чтобы предлагать какие-нибудь готовые решения.
Wlr-l
Дата: 12.05.2015 15:47:20
RuslanSharipov,

Задача не сформулирована не только в первый, но и во второй раз.

Ищите "хранение исторических данных в реляционных базах данных".
RuslanSharipov
Дата: 12.05.2015 16:14:56
Glory
Дата: 12.05.2015 16:18:27
Wlr-l
Дата: 12.05.2015 16:39:35
RuslanSharipov,

Примерно так:
select нужные столбцы
  from A a
  join B b on b.Id_Customer=a.Id_Customer
  join C c on c.Id_Customer=a.Id_Customer
 where  a.Id_Customer=2
 order by b.Date_modify, c.Date_modify;