相册[Fct_Album]
[AlbumId]
[AlbumName]
[UserId]
[Disabled]
[CreateTime]
[CreateBy]
[ModifyTime]
[ModifyBy]
相片[Rel_AlbumPhoto]
[AlbumPhotoId]
[AlbumId]
[PhotoTitle]
[PhotoURL]
[PhotoRemark]
[Hit]
[FrontCover]
[Disabled]
[CreateTime]
[CreateBy]
[ModifyTime]
[ModifyBy]
关系当然是一对多,现在要查出相册并且用相册中一张图片作为封面。[FrontCover]就是设定的封面int型1就是封面,但不是所有相册都设有封面没有封面的要用最新的图片[CreateTime]作为封面,相册里没有图片不显示。
6 个解决方案
#1
photoid是自增的吗?是自增的话可以挑选id最大的作为封面
#2
看的不是很清楚,建议例举一些测试数据上去,并贴出想要的结果。
#3
不是id全用的uniqueidentifier,生成时间排序可以用CreateTime
#4
SELECT
*
FROM [Fct_Album] AS a
INNER JOIN [Rel_AlbumPhoto] AS b ON a.[AlbumId]=b.[AlbumId]
WHERE [AlbumPhotoId]=(SELECT TOP 1 [AlbumPhotoId] FROM [Rel_AlbumPhoto] WHERE [AlbumId]=b.[AlbumId] ORDER BY CASE WHEN [FrontCover]=1 THEN [FrontCover] ELSE 2 END ASC,[CreateTime] desc)
#5
相片
AlbumPhotoId AlbumId PhotoURL CreateTime FrontCover
1 1 1.jpg XXXXXXXXX 1
2 1 2.jpg XXXXXXXXX 0
3 2 3.jpg XXXXXXXXX 0
4 2 4.jpg XXXXXXXXX 0
5 3 5.jpg XXXXXXXXX 0
相册
AlbumId CreateTime .....
1 xxxxxxxx
2 xxxxxxxx
3 xxxxxxxx
最后结果
AlbumId CreateTime AlbumPhotoId PhotoURL
1 xxxxxxxx 1 1.jpg
2 xxxxxxxx 3 3.jpg
3 xxxxxxxx 5 5.jpg
AlbumPhotoId AlbumId PhotoURL CreateTime FrontCover
1 1 1.jpg XXXXXXXXX 1
2 1 2.jpg XXXXXXXXX 0
3 2 3.jpg XXXXXXXXX 0
4 2 4.jpg XXXXXXXXX 0
5 3 5.jpg XXXXXXXXX 0
相册
AlbumId CreateTime .....
1 xxxxxxxx
2 xxxxxxxx
3 xxxxxxxx
最后结果
AlbumId CreateTime AlbumPhotoId PhotoURL
1 xxxxxxxx 1 1.jpg
2 xxxxxxxx 3 3.jpg
3 xxxxxxxx 5 5.jpg
#6
select
b.AlbumId,a.CreateTime,a.AlbumPhotoId,a.PhotoURL
from
相片 a,相册 b
where
a.AlbumId=b.AlbumId
and
a.AlbumPhotoId=(select max(AlbumPhotoId) from 相片 where AlbumId=a.AlbumId)
#1
photoid是自增的吗?是自增的话可以挑选id最大的作为封面
#2
看的不是很清楚,建议例举一些测试数据上去,并贴出想要的结果。
#3
不是id全用的uniqueidentifier,生成时间排序可以用CreateTime
#4
SELECT
*
FROM [Fct_Album] AS a
INNER JOIN [Rel_AlbumPhoto] AS b ON a.[AlbumId]=b.[AlbumId]
WHERE [AlbumPhotoId]=(SELECT TOP 1 [AlbumPhotoId] FROM [Rel_AlbumPhoto] WHERE [AlbumId]=b.[AlbumId] ORDER BY CASE WHEN [FrontCover]=1 THEN [FrontCover] ELSE 2 END ASC,[CreateTime] desc)
#5
相片
AlbumPhotoId AlbumId PhotoURL CreateTime FrontCover
1 1 1.jpg XXXXXXXXX 1
2 1 2.jpg XXXXXXXXX 0
3 2 3.jpg XXXXXXXXX 0
4 2 4.jpg XXXXXXXXX 0
5 3 5.jpg XXXXXXXXX 0
相册
AlbumId CreateTime .....
1 xxxxxxxx
2 xxxxxxxx
3 xxxxxxxx
最后结果
AlbumId CreateTime AlbumPhotoId PhotoURL
1 xxxxxxxx 1 1.jpg
2 xxxxxxxx 3 3.jpg
3 xxxxxxxx 5 5.jpg
AlbumPhotoId AlbumId PhotoURL CreateTime FrontCover
1 1 1.jpg XXXXXXXXX 1
2 1 2.jpg XXXXXXXXX 0
3 2 3.jpg XXXXXXXXX 0
4 2 4.jpg XXXXXXXXX 0
5 3 5.jpg XXXXXXXXX 0
相册
AlbumId CreateTime .....
1 xxxxxxxx
2 xxxxxxxx
3 xxxxxxxx
最后结果
AlbumId CreateTime AlbumPhotoId PhotoURL
1 xxxxxxxx 1 1.jpg
2 xxxxxxxx 3 3.jpg
3 xxxxxxxx 5 5.jpg
#6
select
b.AlbumId,a.CreateTime,a.AlbumPhotoId,a.PhotoURL
from
相片 a,相册 b
where
a.AlbumId=b.AlbumId
and
a.AlbumPhotoId=(select max(AlbumPhotoId) from 相片 where AlbumId=a.AlbumId)