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

Откуда:
Сообщений: 23
Существует два отчета (архив и оперативные события). Нужно объединить эти два отчета в один.

Если нет данных по заданным параметрам запроса в оперативных событиях, то данные запрашиваются из других архивных таблиц с теми же параметрами.

Архивные (RptEventArchives INNER JOIN RptIndividualHistoryArchive) и оперативные события (RptEvents INNER JOIN RptIndividualHistory) никак не связаны и не зависимы.

Можно ли как-то реализовать?
15 июн 16, 08:06    [19294179]     Ответить | Цитировать Сообщить модератору
 Re: Найти данные из разных таблиц с условием  [new]
Павел Воронцов
Member

Откуда: Новосибирск
Сообщений: 2392
Блог
alexxxfm
Можно ли как-то реализовать?
Можно. Реализуйте.

Если хотите получить помощь, приведите DDL таблиц, пример данных, пример отчетов и пример того, что хочется получить.
15 июн 16, 08:19    [19294194]     Ответить | Цитировать Сообщить модератору
 Re: Найти данные из разных таблиц с условием  [new]
alexxxfm
Member

Откуда:
Сообщений: 23
Павел Воронцов,
хорошо...напишу
15 июн 16, 08:25    [19294207]     Ответить | Цитировать Сообщить модератору
 Re: Найти данные из разных таблиц с условием  [new]
alexxxfm
Member

Откуда:
Сообщений: 23
Павел Воронцов,

SELECT "RptTenants"."TenantName",
"RptTenants"."TenantId",
"RptEvents"."DateTime",
"RptDoors"."DoorName",
"RptEventTypes"."EventText",
"RptIndividualHistory"."LastName",
"RptIndividualHistory"."FirstName",
"RptIndividualHistory"."IndividualNdx"

FROM ((("InetDb"."dbo"."RptTenants" "RptTenants"
INNER JOIN "InetDb"."dbo"."RptEvents" "RptEvents" ON "RptTenants"."TenantId"="RptEvents"."TenantNdx")
INNER JOIN "InetDb"."dbo"."RptEventTypes" "RptEventTypes" ON "RptEvents"."EventTypeNdx"="RptEventTypes"."EventTypeId")
INNER JOIN "InetDb"."dbo"."RptIndividualHistory" "RptIndividualHistory" ON
(("RptEvents"."TenantNdx"="RptIndividualHistory"."TenantNdx")
AND ("RptEvents"."IndividualNdx"="RptIndividualHistory"."IndividualNdx"))
AND ("RptEvents"."AccessVersionNdx"="RptIndividualHistory"."AccessVersionNdx"))
LEFT OUTER JOIN "InetDb"."dbo"."RptDoors" "RptDoors" ON "RptEvents"."PointAddress"="RptDoors"."PointAddress"

WHERE "RptIndividualHistory"."FirstName" LIKE 'Иван Иванович'
AND "RptIndividualHistory"."LastName" LIKE 'Иванов'
AND ("RptEvents"."DateTime">={ts '2016-06-01 00:00:01'}
AND "RptEvents"."DateTime"<{ts '2016-06-16 00:00:01'})
AND "RptTenants"."TenantId"<>0

ORDER BY "RptTenants"."TenantName",
"RptIndividualHistory"."IndividualNdx",
"RptEvents"."DateTime",
"RptIndividualHistory"."LastName",
"RptIndividualHistory"."FirstName"
15 июн 16, 09:20    [19294349]     Ответить | Цитировать Сообщить модератору
 Re: Найти данные из разных таблиц с условием  [new]
alexxxfm
Member

Откуда:
Сообщений: 23
Таблицы

Картинка с другого сайта.

Картинка с другого сайта.

Картинка с другого сайта.

Картинка с другого сайта.
15 июн 16, 09:38    [19294410]     Ответить | Цитировать Сообщить модератору
 Re: Найти данные из разных таблиц с условием  [new]
alexxxfm
Member

Откуда:
Сообщений: 23
Если нет данных(событий) в dbo.RptEvents,
то запрашивать те же данные из dbo.RptEventsArchive
15 июн 16, 09:55    [19294475]     Ответить | Цитировать Сообщить модератору
 Re: Найти данные из разных таблиц с условием  [new]
СТУДЕНТ123
Member

Откуда:
Сообщений: 79
Ну как то так, если данных мало попадает в выборку.

DECLARE @tst TABLE (
	ProductBrandId INT
	, DataSource VARCHAR(20)
	)

INSERT INTO @tst
SELECT ProductBrandId
	, 'DWH' AS DataSource
FROM DWH.dbo.ProductBrands
--WHERE ProductBrandId IS NULL

IF @@rowcount < 1
	INSERT INTO @tst
	SELECT ProductBrandId
		, 'STAGE_DWH' AS DataSource
	FROM STAGE_DWH.dbo.ProductBrands

SELECT *
FROM @tst
15 июн 16, 10:03    [19294498]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить