·连接查询问题?·

qiyeziyan 2006-10-18 03:36:04
create table logs
(
userId varchar(16) not null, --用户ID
logId int identity(1,1) not null primary key, --日志ID
logTitle varchar(50) not null, --日志标题
logType varchar(10) not null, --日志类型(日志类型表)
logContent varchar(4000) not null, --日志内容
logTime datetime not null, --发表时间
isCommend varchar(1) --是否推荐
)


create table logType
(
userId varchar(16) not null, --用户ID
logTypeId int identity(1,1) not null primary key, --日志类型ID
logTypeName varchar(20) not null --日志类型名称
)



create table comments
(
userId varchar(16) not null, --用户ID
commentId int identity(1,1) not null primary key, --评论ID
commentType varchar(10) not null, --评论类型(0为日志,1为相片,2为音乐)
commentLogId varchar(10), --日志ID
commentAlbumId varchar(10), --相片ID
commentMusicId varchar(10), --音乐ID
commentContent varchar(500) not null, --评论内容
commentAuthor varchar(16) not null, --评论作者
commentTime datetime not null, --评论时间
)

表的结构如上,想查询该用户的所有日志的日志标题,日志ID,日志时间,日志类型名,及有多少评论。如果是0条评论也要查出日志,效果像下面的

[日志类型]日志标题 评论(0)
[日志类型]日志标题 评论(5)
...全文
128 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
ziyan_suo 2007-03-27
  • 打赏
  • 举报
回复
logId int identity(1,1) not null primary key,--日志ID
commentLogId varchar(10),--日志ID

logTypeId int identity(1,1) not null primary key,--日志类型ID
logType varchar(10) not null,--日志类型(日志类型表)
字段的数据类型怎么不一样?

select
lt.logTypename,
lg.logTitle,
sum(case when ct.commentTime is null then 0 else 1 end)as ct
from
dbo.logs lg
inner join
dbo.logType lt
on
lg.userid = lt.userid and lg.logType = lt.logTypeId
left join
dbo.comments ct
On
ct.userid = lg.userid and ct.commentLogId = lg.logId
group by
lt.logTypename, lg.logTitle
w_lion 2006-10-18
  • 打赏
  • 举报
回复
外键关系 看不出

22,206

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧