Пожалуйста, помогите мне в следующей ситуации:
В SQL Server 2008 у меня есть база данных с таблицами:
- Установки (
id, name
)который уникален для данной системы - Продукты (
Id, name
), которые установлены в системе
И поскольку в системе имеется больше продуктов и столько жеПродукт может быть установлен на нескольких машинах, есть таблица InstallationXProduct
с их идентификаторами.
Другая таблица Usages
(usageid, productid, date
и т. Д.) Связана с продуктом для отслеживания использования продукта.
Мне нужен скрипт для связи Installation
, Products
и Usage
для каждой пары Installation-Product
, например,
Installation 1 Product A 2
Installation 1 Product B 3
Installation 2 Product A 1
Installation 2 Product C 2
Спасибо за любую помощь
Позже РЕДАКТИРОВАТЬ:
Таблицы:
Installation
: InstallationID, InstallationName
Product
: ProductID, ProductName
InstallationXProduct
: InstallationID, ProductID
Usage
: UsageID, DateRecorded, ProductID
Настроить данные:
Insert into Installation values(1,'A')
Insert into Installation values(2,'B')
Insert into Product values (1,'P1')
Insert into Product values (2,'P2')
Insert into InstallationXProduct values (1,1)
Insert into InstallationXProduct values (2,1)
Insert into InstallationXProduct values (1,2)
Insert into InstallationXProduct values (2,2)
Insert into Usage values(1,getdate(),1)
Insert into Usage values(2,getdate(),2)
Insert into Usage values(3,getdate(),1)
Запрос на выбор:
select I.InstallationID, P.ProductID, count(U.UsageID)
from Installation I
join InstallationXProduct IXC on I.InstallationID = IXC.InstallationID
join Product P on P.ProductID = IXC.ProductID
join Usage U on U.ProductID = P.ProductID
group by I.InstallationId,P.ProductID
возвращает:
1 1 2
2 1 2
1 2 1
2 2 1
После прочтения этой облегченной версии, я понимаю, что невозможно разделить использование в продуктах и установках, я не могу определить, было ли записано использованиепродукт 1 из установки 1 или 2.