Я пытаюсь сделать что-то похожее на столбец, пересекающийся на двух таблицах. Таблица:Столбец пересекается на двух таблицах
LogTag
: журнал может иметь ноль или несколько теговMatchingRule
: правило соответствия состоит из одного или нескольких тегов, которые определяют правила
Журнал может иметь ноль или больше правил, соответствующих ему. Я буду проходить в MatchingRuleID
и ожидаю вернуть все журналы, соответствующие этому правилу.
Ожидаемый результат: Итоговый набор совпадений LogID
s. Например. переходя в MatchingRuleID = 30
должен возвращать LogID
101. MatchingRuleID = 31
должен возвращать 100.
Кроме того, LogTag
таблица может иметь миллионы строк так, предпочтительным является эффективным запрос.
Вопрос: Как найти все LogID
s, которые соответствуют указанному правилу определения?
Схема:
CREATE TABLE dbo.Tag
(
TagID INT,
TagName NVARCHAR(50)
)
INSERT INTO dbo.Tag (TagID, TagName)
VALUES (1, 'tag1'), (2, 'tag2'), (3, 'tag3')
CREATE TABLE dbo.LogTag
(
LogID INT,
TagID INT
)
INSERT INTO dbo.LogTag (LogID, TagID)
VALUES (100, 1), (101, 1), (101, 2), (101, 3), (101, 4), (102, 2), (102, 3)
CREATE TABLE dbo.MatchingRule
(
MatchingRuleID INT,
TagID INT
)
INSERT INTO dbo.MatchingRule (MatchingRuleID, TagID)
VALUES (30, 1), (30, 2), (30, 3), (31, 1)
, что является ожидаемым результат? – Squirrel
@Squirrel, редактирование сделано для уточнения – g2server
где ожидаемый результат? –