问题与Sql服务器
问题描述:
我在sql server 2008上有一个问题,我有2个表幻灯片和幻灯片。两个表中的通用字段都是SlideShowId。 现在要用SlideCount来获取所有的SlideShow,我使用这个过程。问题与Sql服务器
ALTER PROCEDURE [dbo].[sp_GetAllSlideShow]
@FILTER BIT,
@PORTALID INT
AS
BEGIN
IF (@FILTER = 1)
SELECT SS.SLIDESHOWNAME + ' [' + CAST((COUNT(S.SLIDEID)) AS VARCHAR(MAX))+']', SS.SLIDESHOWID FROM SLIDESHOW SS
INNER JOIN SLIDES S
ON SS.SLIDESHOWID = S.SLIDESHOWID
WHERE SS.PORTALID = 0 AND [TYPE] IS NULL
GROUP BY SS.SLIDESHOWNAME, SS.SLIDESHOWID
ELSE
SELECT SS.SLIDESHOWNAME + ' [' + CAST((COUNT(S.SLIDEID)) AS VARCHAR(MAX))+']', SS.SLIDESHOWID FROM SLIDESHOW SS
INNER JOIN SLIDES S
ON SS.SLIDESHOWID = S.SLIDESHOWID
WHERE SS.PORTALID = @PORTALID
GROUP BY SS.SLIDESHOWNAME, SS.SLIDESHOWID
END
这个运行良好,但说,如果新的幻灯片已经建立,这个过程不显示该幻灯片,直到新的幻灯片已经在幻灯片被创建,其实那是因为我已经加入都为SlideCount表,并没有特定幻灯片的幻灯片,该幻灯片不会出现,但我也想要幻灯片。该计数应该默认为0。
有没有什么办法可以做到这一点。
答
这是因为您正在使用INNER JOIN
。一个INNER JOIN
将只显示在两个表中相同的结果,因此如果您的幻灯片记录仅添加到一个表中,那么INNER JOIN
将不会将其拖入SELECT
中。尝试将您的INNER JOIN
更改为LEFT JOIN
。
感谢兄弟,这是超级分辨率,也很傻 – Abbas
@阿巴斯没有问题,而这些都是第二组眼睛总是有帮助的事情类型。乐意效劳。 – 2011-10-11 23:40:51