日期:2014-05-19  浏览次数:20467 次

一个博客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