Sql查询获取所有类别,如果是活动的

时间:2011-06-10 12:05:31

标签: sql sql-server

我有从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  .....

3 个答案:

答案 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