【发布时间】:2016-01-18 15:44:50
【问题描述】:
我有一个问题。我有 3 个表格,一个包含视频列表,另一个包含类别列表,第三个告诉我每个视频所在的类别。 我想列出所有类别,但我需要使用每个类别中插入的最后一个视频的缩略图。 该列表必须显示类别的名称和插入该类别的最后一个视频的缩略图。我希望我说清楚了。
- 表
Videos(Id, Name, Description, Duration, Date, Thumbnail, Active ) - 表
Categories(Id, Cat, Active) - 表
VidCat(Id, Video, Cat)
我尝试使用下面的表达式但不起作用。它显示了我拥有的所有缩略图。
SELECT DISTINCT C.[Id], C.Cat, V.[Codigo]
FROM [Categories] AS C
left JOIN [VidCat] AS VC ON C.[Id] = VC.[Cat]
left JOIN [Videos] AS V ON VC.[Video] = V.[Id]
WHERE (C.[Active] = 1)
也试过了,结果一样。
SELECT DISTINCT C.[Id], C.Cat, V.[Thumbnail]
FROM [Categories] AS C
left JOIN [VidCat] AS VC ON C.[Id] = VC.[Cat]
left JOIN [Videos] AS V ON VC.[Video] = V.[Id]
WHERE (C.[Active] = 1)
AND (V.[Thumbnail] IN (SELECT distinct [Thumbnail] FROM [Videos] WHERE VC.[Video] = [Id] ORDER BY [Date] DESC))
ORDER BY P.[Id]
非常感谢。
贝托
【问题讨论】:
-
将
V.[Thumbnail]condition 从WHERE移动到ON以获得真正的LEFT JOIN行为,因为现在您可以获得常规的内部连接结果。 -
另外,不需要在子查询中选择
DISTINCT。
标签: sql sql-server select join