Sql查询得到所有类别,如果有效
问题描述:
我有一个关系从N到N从类别到我的数据库中的项目。Sql查询得到所有类别,如果有效
我对这个三个表:
类别,项目和Categories_Items
我想获得的所有类别,每个人告诉我,如果是主动或不旁边有一个额外的字段。
这就是我得到的时刻:
SELECT C.ID
,C.Name
,IsActive=????
FROM Categories C
left join Items_Categories IC on IC.CategoryID=C.ID
where [email protected]
结果我想获得的所有可用类别列表,并标记为活动那些在表Items_Categories并与匹配@ItemId:
ID Name IsActive -- --------- -------- 1 Category1 0 2 Category2 1 3 Category3 .....
答
试试这个:
SELECT C.ID
,C.Name
,CASE
WHEN IC.CategoryID IS NULL THEN 0
ELSE 1
END IsActive
FROM Categories C LEFT JOIN Items_Categories IC
ON IC.CategoryID=C.ID
AND [email protected]
+0
谢谢,这正是我正在寻找的。 – Jose3d 2011-06-10 12:16:01
答
SELECT C.ID
,C.Name
,CASE WHEN /*Whatever condition makes it active goes here*/ THEN 1 ELSE 0 END AS IsActive
FROM Categories C
LEFT JOIN Items_Categories IC on IC.CategoryID=C.ID
WHERE [email protected]
这应该可以帮助...如果你定义,使得它活跃的状态,我会更新查询
答
SELECT C.ID
,C.Name
,isnull((select 1 from [tablename] where [tablename.Category] = C.Name), 0) as IsActive
FROM Categories C
left join Items_Categories IC on IC.CategoryID=C.ID
where [email protected]
是什么让一个类别“活动”?它是否被用于分类项目? – diagonalbatman 2011-06-10 12:09:22
为什么左连接?因为您在WHERE子句中使用Items_Categories.ItemID,所以效果不会有效,结果与内部连接一样好 – Chandu 2011-06-10 12:11:08
嗨,感谢您的快速响应。我没有在帖子中正确解释我的自我。我想获得所有类别,并将其标记为另一个表中的活动类别。 – Jose3d 2011-06-10 12:12:19