一个博客Sql语句的问题!
有如下三个表:
第一:
BLOG_BaseInfo Blog基本信息管理
Blog_ID Blog自动编号
Blog_Name Blog名称
Blog_Title Blog标题
Blog_Intro 博客介绍
Blog_TemplateId 博客采用的当前模板
Blog_MasterID 博客主人ID
第二:
BLOG_Album Blog相册
Album_ID (int 4,自动增长列,增量1) 相册ID
Album_Power (int 4) 相册访问权限
Album_BlogID (int 4) 相册所属博客的用户ID
Album_Name (nvarchar 100) 相册名称
Album_ Synopsis (nvarchar 80) 相册简介
第三:
BLOG_Picture Blog相册图片
Picture_ID (int 4) 图片ID
Picture_ AlbumID (int 4) 图片所属相册ID
Picture_Name (nvarchar 50,主键) 图片名称
Picture_Path (nvarchar 80) 图片相对路径
Picture_SmallPath (nvarchar 80) 图片缩率图相对路径
Picture_Time (datatime 8) 图片上传时间
我首先需要从BLOG_Picture表取得Picture_SmallPath,条件是Picture_ AlbumID字段所有和BLOG_Album表的Album_ID字段相等的数据,只取最新的一条记录(即order by Picture_ID)然后BLOG_Album表中获取Album_ID,Album_Power,Album_Name 条件是Album_BlogID等于BLOG_BaseInfo表内的Blog_MasterID!
换个意思就是说,我现在在做一个博客的相册,首先,用户打开后要判断这个相册属于哪个用户,根据Blog_MasterID来判断,然后取出这个用户对应的相册ID和名称(注:一个用户可有多个相册,即Album_BlogID可能有多个相同的都要取!)然后再查询BLOG_Picture表内所有Picture_ AlbumID和BLOG_Album的Album_BlogID相同的图片!
我该怎么写这个Sql语句呢?小弟Sql很弱,希望各位大虾帮帮忙!
另:如果哪位大哥知道更好的方法,请不吝赐教........就是做一个多用户博客的相册!谢谢了!
------解决方案--------------------
看了半天,应该就是个关联
select * from BLOG_BaseInfo AS A
LEFT OUTER JOIN BLOG_Album AS B ON
A.Blog_MasterID = B.Album_BlogID
LEFT OUTER JOIN BLOG_Picture AS C
ON C.Picture_ AlbumID = B.Album_ID
Order By C.Picture_ID Desc
------解决方案--------------------
你的这个要求,也不需要把它们写在一起啊!分开写就行了.
1、取相册列表:SELECT * FROM BLOG_Album WHERE Album_BlogID = 用户ID
2、取图片列表:
如果只取其中一个相册内的所有图片:SELECT * FROM BLOG_Picture WHERE Picture_ AlbumID = 打开相册的ID
如果取某一用户的所有图片:SELECT TA.*,TB.Album_ID,TB.Album_Power,TB.Album_Name FROM BLOG_Picture TA LEFT JOIN BLOG_Album TB ON TA.Picture_ AlbumID = TB.Album_ID WHERE TB.Album_BlogID = 用户ID
------解决方案--------------------
SELECT * FROM BLOG_BaseInfo
INNER JOIN BLOG_Album ON Blog_MasterID = Album_BlogID
INNER JOIN BLOG_Picture ON Picture_ AlbumID = Album_ID
ORDER BY Picture_ID DESC