Возврат таблицы на основе случая переключения в хранимой процедуре с использованием различных операторов выбора - PullRequest
0 голосов
/ 12 июля 2020

Мне нужно сделать выбор из разных таблиц на основе числа.

CREATE PROCEDURE [dbo].[usp_Read_Details] @Identifier INT
AS
BEGIN
    CASE @Identifier
            WHEN 1
                THEN (
                        SELECT Name
                        FROM Furniture
                        )
            WHEN 2
                THEN
                    --select Name from Tables with some join and conditions in furniture
            WHEN 3
                THEN
                    --select Name from Chairs with some join and conditions in furniture, TAbles
            END

    RETURN
END;

В основном, это для популяции ComboBox на основе того, что пользователь выбирает в интерфейсе. Сначала выбирается Мебель, затем на основе мебели, имеющихся стульев, затем на основе выбранной мебели и стульев, столов и так далее. Как этого добиться в одном ИП? Я знаю, что IF ELSE сработает, но просто хочу знать, есть ли случай переключателя или какие-либо другие альтернативы, доступные для сценария.

1 Ответ

1 голос
/ 13 июля 2020

Вы можете сделать что-то, как показано ниже, используя LEFT JOIN и выбрать значения на основе значения @identifier. Это упростит запрос вместо IF ELSE logi c.

SELECT 
CASE WHEN @identifier = 1 THEN F.Name
     WHEN @identifier = 2 THEN c.Name
     WHEN @identifier = 3 THEN t.Name
     ELSE 'Not Found' END as Names
FROM Furniture AS F
LEFT OUTER JOIN Chairs AS C ON c.parentID = f.Id 
LEFT OUTER JOIN Tables AS T ON t.ParentID = c.ID 
...