create table Tbl_Categories--板块表(究极版本)
(
CategoryId Int primary key identity, --主键,自增长 版区ID()   Session
CategoryName nVarchar(50) unique, --唯一 板块名称
CategoryExplain nVarchar(255), --非空 版块说明
CategoryImageUrl nVarchar(50), --版块照片及签名档图片路径--
CategoresDate datetime default(getdate()) --板块创建时间
)
create table Tbl_Users--用户表(究极最终版)
(
UserId Int identity(1,1) primary key not null,--用户ID
        UserName nVarchar(20) unique not null,--用户名,唯一的
UserRole Int default(1),--用户角色(0为管理员,1为注册用户,2为版主))
create table Tbl_Forums--版区表(究极版)
(
ForumId Int primary key identity,-- 主键,自增长 论坛ID  Session
UserId Int  references Tbl_Users(UserId), --引用用户id,发帖人的id
CategoryId Int  references Tbl_Categories(CategoryId), --外键 (引用板块表CategoryId字段)
ForumName nVarchar(100) unique not null,-- 唯一 版区名称
ForumDescription nVarchar(255), -- 可不填 版区说明
ForumDate Varchar(20) Not null --创建或者更新时间
)
create table Tbl_Topics--(主题表)(究极表)
(
TopicId Int primary key identity,--主键,自增长 主题ID  Session
UserId Int references Tbl_Users(UserId),--外键(引用用户表)
ForumId Int references Tbl_Forums(ForumId),--外键(引用版区表)
CategoryId Int  references Tbl_Categories(CategoryId), --外键 (引用板块表CategoryId字段)
Subject nVarchar(100) not null, --主题标题
Subhead Varchar(100), --主题副标题说明
IssueMood Varchar(50), --发表心情(可以设定与选项)
TopicsconText Varchar(1000) not null, --主题内容
TopicsDate Datetime null default(getdate()), --主题创建日期
Nottioics Bit Default(0),--是否允许他人回帖是为0,不是为1
)高手帮我看一下啊 。 我想通过只接收板块表的CategoryId,来得到版区表的ForumId,用户表的斑竹名字,计算每个版区里的主题数量和得到每个版区最后发表主题的标题,应该怎么写啊~~~~~~~~~~~~~~~  好难啊!!

解决方案 »

  1.   

    try--
    select 
      c.ForumId,
      b.username as 斑竹名字,
      d.cnt as 主题数量,
      e.Subject 最后发表主题的标题
    from
      Tbl_Categories a,
      Tbl_Users b,
      Tbl_Forums c,
      (select ForumId,count(1) as cnt from Tbl_Topics group by ForumId) d,
      (select ForumId,Subject from Tbl_Topics t where not exists(select 1 from Tbl_Topics where ForumId=t.ForumId and TopicsDate>t.TopicsDate) e
    where
      a.CategoryId=xxx  --输入条件
    and 
      c.CategoryId=b.CategoryId
    and
      c.UserId=b.UserId
    and
      c.ForumId=d.ForumId
    and
      c.ForumId=e.ForumId
      

  2.   

    它说 where 前面那个e 有语法错误~~
      

  3.   

    再试试select 
      c.ForumId,
      b.username as 斑竹名字,
      d.cnt as 主题数量,
      e.Subject 最后发表主题的标题
    from
      Tbl_Categories a,
      Tbl_Users b,
      Tbl_Forums c,
      (select ForumId,count(1) as cnt from Tbl_Topics group by ForumId) d,
      (select ForumId,Subject from Tbl_Topics t where not exists(select 1 from Tbl_Topics where ForumId=t.ForumId and TopicsDate>t.TopicsDate)) e
    where
      a.CategoryId=xxx  --输入条件
    and 
      c.CategoryId=a.CategoryId
    and
      c.UserId=b.UserId
    and
      c.ForumId=d.ForumId
    and
      c.ForumId=e.ForumId