我不是专家查询作家。抓住我的头。任何人都可以帮我解决这个问题吗?
表tbF
RecordId MarketId
101 1
102 1
201 2
301 3
表tbSB
MarketId BMId
1 3
1 5
2 1
2 2
2 3
2 4
2 5
3 1
表tbFM
RecordId BMId
101 3
102 3
102 5
201 1
201 3
201 4
现在我想输出
Record Id MarketId BMId Active
101 1 3 true
101 1 5 false
102 1 3 true
102 1 5 true
201 2 1 true
201 2 2 false
201 2 3 true
201 2 4 true
201 2 5 false
301 3 1 false
有效栏目 - >
如果存在的记录ID映射到特定的BMId,则为true,否则为false
RecordId属于某个市场。 - >表tbF
每个市场都有一定的BMId映射 - > tbSB
每个Recordid都有一定的BMId映射 - > tbFM
,则active为真 否则,如果BMId被映射为记录市场而不是记录,那么对于该记录,Active是假的
答案 0 :(得分:1)
SELECT
f.RecordId
, f.MId
, s.BMId
, Active = CASE
WHEN m.RecordID is null THEN 'false'
ELSE 'true'
END
FROM tbF f
INNER JOIN tbSB s ON f.MId = S.MId
LEFT JOIN tbFM m ON m.RecordId = f.RecordID AND m.BMId = s.BMId
由于问题中显示的预期输出符合该逻辑,我已将Active设置为由tbFM表中的存在决定。