Tsql Sql Server的问题

Tsql Sql Server的问题,tsql,sql-server-2008,stored-procedures,inner-join,Tsql,Sql Server 2008,Stored Procedures,Inner Join,我在SQLServer2008上有一个问题,我有两张幻灯片和幻灯片。两个表中的公共字段都是SlideShowId。 现在,为了使用SlideCount获得所有幻灯片,我使用以下步骤 ALTER PROCEDURE [dbo].[sp_GetAllSlideShow] @FILTER BIT, @PORTALID INT AS BEGIN IF (@FILTER = 1) SELECT SS.SLIDESHOWNAME + ' [' + CAST((COUN

我在SQLServer2008上有一个问题,我有两张幻灯片和幻灯片。两个表中的公共字段都是SlideShowId。 现在,为了使用SlideCount获得所有幻灯片,我使用以下步骤

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
这运行得很好,但是如果创建了新的幻灯片,这个过程不会显示该幻灯片,直到在该幻灯片中创建了新的幻灯片,实际上这是因为我已经加入了两个表以进行幻灯片计数,并且没有特定幻灯片的幻灯片,该幻灯片不会显示,但我也想要该幻灯片。默认情况下,其中的计数应为0


有什么方法可以做到这一点。

那是因为您使用的是
内部联接。
内部联接
只会在两个表中显示相等的结果,因此,如果您的幻灯片放映记录仅添加到一个表中,则
内部联接
不会将其拉入
选择
。尝试将
内部联接更改为
左联接

,这是因为您使用的是
内部联接
内部联接
只会在两个表中显示相等的结果,因此,如果您的幻灯片放映记录仅添加到一个表中,则
内部联接
不会将其拉入
选择
。尝试将您的
内部连接
更改为
左连接

@Abbas没问题,这些都是第二双眼睛总是有帮助的类型。很高兴能帮上忙。@Abbas没问题,这些都是第二双眼睛总能帮上忙的事情。很乐意帮忙。