Мне нужен запрос «один раз» (поэтому производительность не столь критична) с использованием таблиц, подобных этим (упрощенные версии фактических данных):
CREATE TABLE #Items
( ItemPK int not null primary key
,ItemDescription varchar(25) not null
)
INSERT INTO #Items VALUES (1,'rock')
INSERT INTO #Items VALUES (2,'wood')
INSERT INTO #Items VALUES (3,'plastic')
CREATE TABLE #ItemTypes
( ItemType char(1) not null primary key
,ItemTypeDescription varchar(25) not null
)
INSERT INTO #ItemTypes VALUES ('A','Type A')
INSERT INTO #ItemTypes VALUES ('B','BBBBB')
INSERT INTO #ItemTypes VALUES ('C','Color')
CREATE TABLE #ItemInfo
( InfoPK int not null primary key identity(1,1)
,ItemPK int not null foreign key references #ListOfItems.ItemPK
,ItemType char(1) not null foreign key references #ItemTypes.ItemType
,ItemValue varchar(10) not null
)
INSERT INTO #ItemInfo VALUES (1,'A','hard')
INSERT INTO #ItemInfo VALUES (1,'A','natural')
INSERT INTO #ItemInfo VALUES (1,'B','cold')
INSERT INTO #ItemInfo VALUES (1,'C','gray')
INSERT INTO #ItemInfo VALUES (2,'B','grain')
INSERT INTO #ItemInfo VALUES (2,'B','brown')
INSERT INTO #ItemInfo VALUES (3,'A','flexible')
INSERT INTO #ItemInfo VALUES (3,'A','colorful')
INSERT INTO #ItemInfo VALUES (3,'A','unnatural')
INSERT INTO #ItemInfo VALUES (3,'C','waterproof')
Вы получите предупреждения о FK и временных таблицах; Я просто показываю их для ясности. Вы можете удалить "#", чтобы создать постоянные таблицы ...
Когда я запускаю этот запрос:
SELECT
i.ItemDescription
,t.ItemTypeDescription
,o.ItemValue
FROM #Items i
LEFT OUTER JOIN #ItemInfo o ON i.ItemPK=o.ItemPk
LEFT OUTER JOIN #ItemTypes t ON o.ItemType=t.ItemType
Я получаю этот вывод:
ItemDescription ItemTypeDescription ItemValue
------------------------- ------------------------- ----------
rock Type A hard
rock Type A natural
rock BBBBB cold
rock Color gray
wood BBBBB grain
wood BBBBB brown
plastic Type A flexible
plastic Type A colorful
plastic Type A unnatural
plastic Color waterproof
Однако мне нужен вывод:
ItemDescription CombinedDescription
------------------------- -----------------------------------------------
rock Type A: hard, natural; BBBBB: cold; Color: gray
wood BBBBB: grain, brown
plastic Type A: flexible, colorful, unnatural; Color: waterproof
(3 row(s) affected)
спасибо ...