Проблема с Sql Server - PullRequest
       17

Проблема с Sql Server

1 голос
/ 12 октября 2011

У меня проблема с SQL Server 2008, у меня есть 2 таблицы SlideShow и Slide. Общее поле в обеих таблицах - SlideShowId. Теперь, чтобы получить все SlideShow с 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

это работает нормально, но, скажем, если было создано новое слайд-шоу, эта процедура не показывает это слайд-шоу до тех пор, пока в этом слайд-шоу не будет создан новый слайд, на самом деле это потому, что я объединил обе таблицы для SlideCount нет слайда для определенного слайд-шоу, это слайд-шоу не будет отображаться, но я также хочу, чтобы это слайд-шоу. значение по умолчанию должно быть 0.

Есть ли способ, которым я могу это сделать.

1 Ответ

1 голос
/ 12 октября 2011

Это потому, что вы используете INNER JOIN. INNER JOIN будет показывать только результаты, которые равны в обеих таблицах, поэтому, если ваша запись слайд-шоу была добавлена ​​только в одну таблицу, то INNER JOIN не вытянет ее в SELECT. Попробуйте изменить INNER JOIN на LEFT JOIN.

...