【发布时间】:2011-10-11 23:20:25
【问题描述】:
我在 sql server 2008 上有一个问题,我有 2 个表格 SlideShow 和 Slide。两个表中的共同字段是 SlideShowId。 现在要使用 SlideCount 获取所有 SlideShow,我使用此过程。
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。
有什么办法可以做到。
【问题讨论】:
标签: tsql sql-server-2008 stored-procedures inner-join