我有从N到N的关系,从类别到我数据库中的项目。
我有三张桌子:
类别,项目和类别_项目
我想获得所有类别和每个类别旁边的额外字段,告诉我是否有效。
这就是我现在所拥有的:
SELECT C.ID
,C.Name
,IsActive=????
FROM Categories C
left join Items_Categories IC on IC.CategoryID=C.ID
where IC.ItemId=@ItemID
我想得到的结果是所有可用类别的列表,并将其标记为活动表项Items_Categories中的那些并与@ItemId匹配:
ID Name IsActive -- --------- -------- 1 Category1 0 2 Category2 1 3 Category3 .....
答案 0 :(得分:2)
试试这个:
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 IC.ItemId=@ItemID
答案 1 :(得分:1)
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 IC.ItemId=@ItemID
这应该有帮助...如果您定义使其处于活动状态的条件,我将更新查询
答案 2 :(得分:0)
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 IC.ItemId=@ItemID