根据子表关键字查找父级

时间:2014-10-17 13:33:57

标签: sql sql-server

我试图根据使用子表的匹配关键字来获取父母:

AssetKeyword
============
AssetID (int)
KeywordID (int)

我试图找到表中包含条目的资产,例如关键字3 4 5。 我已经尝试了子查询和聚合,但无法理解它。感谢任何帮助。那些星期五......

2 个答案:

答案 0 :(得分:1)

我猜这不是很有活力......

select
    AssetID
from (
    select distinct
        AssetID,
        KeywordID
    from AssetKeyword
    where
        KeywordID in (3,4,5)
) t
group by
    AssetID
having 
    COUNT(*) = 3

答案 1 :(得分:0)

您可以使用EXISTS

SELECT a.AssetID, a.Col2, ...
FROM dbo.Asset a
WHERE EXISTS
(
    SELECT 1 FROM AssetKeyword ak -- it doesn't matter what you "select" here
    WHERE ak.AssetID = a.AssetID 
    AND   ak.KeywordID IN (3, 4, 5)
)

这将选择所有父记录,其中至少有一个孩子至少有一个这样的关键字。

相关问题