次のようなテーブル構造があります。
CREATE TABLE Item
(
ItemKey BIGINT,
DisplayName VARCHAR(100)
)
INSERT INTO Item VALUES (136172,'Computer')
INSERT INTO Item VALUES (156737,'Car')
CREATE TABLE ItemTypeFactvw
(
ItemKey BIGINT,
TypeDimKey BIGINT
)
INSERT INTO ItemTypeFactvw VALUES (136172,483)
INSERT INTO ItemTypeFactvw VALUES (136172,1353)
INSERT INTO ItemTypeFactvw VALUES (156737,1000)
CREATE TABLE ItemTypeDimvw
(
Id BIGINT,
BaseId BIGINT,
TypeDimKey BIGINT,
DisplayName VARCHAR(100)
)
INSERT INTO ItemTypeDimvw VALUES (1,80,483,'IT Gadgets')
INSERT INTO ItemTypeDimvw VALUES (3,1,1353,'Electronics')
INSERT INTO ItemTypeDimvw VALUES (2,44,1000,'Vehicle')
次のような結果を生成する必要があります(目的の出力):
| ITEMKEY | DISPLAYNAME | TYPEDIMKEY | ID | BASEID | ITEM BASE TYPE |
---------------------------------------------------------------------
| 136172 | Computer | 483 | 1 | 80 | Electronics |
| 156737 | Car | 1000 | 2 | 44 | Vehicle |
これは私が持っているクエリです:
SELECT i.ItemKey,
i.DisplayName,
it.TypeDimKey,
itd.Id,
itd.BaseId,
itd.DisplayName 'Item Base Type'
FROM Item i
INNER JOIN ItemTypeFactvw it
on i.ItemKey = it.ItemKey
INNER JOIN ItemTypeDimvw itd
ON itd.TypeDimKey = it.TypeDimKey
ItemTypeDimvw
上記のクエリは、 where DisplayName
isから追加のレコードも取得するため、目的の出力を生成しません"IT Gadgets"
。
これをクラス階層と考えてください。ITガジェットはエレクトロニクスから受け継がれています。したがって、この場合は基本タイプを表示する必要があります。IT ガジェットの電子機器です。