2015-06-05 3 views
-1

У меня есть проблема с двумя запросами:T-SQL IF ... ELSE и более чем одно значение

ALTER PROCEDURE pracownik_zamowienie (@id int) 

AS 

IF (SELECT EmployeeID FROM Orders WHERE EmployeeID LIKE @id) LIKE @id 
BEGIN 
    SELECT OrderID FROM Orders 
    END 

    ELSE 
     BEGIN 
     SELECT OrderID, EmployeeID FROM Orders 
     END 

И это одна:

ALTER PROCEDURE dwa_produkty1 (@id1 int, @id2 int) AS 

IF (SELECT OrderID FROM [Order Details] WHERE ProductID LIKE @id1) LIKE (SELECT OrderID FROM [Order Details] WHERE ProductID LIKE @id2) 
BEGIN 
    SELECT OrderID FROM [Order Details] 
END 

В первом я хочу получить OrderId для сотрудника который ID я набираю сам, но он не работает. Когда я печатаю идентификатор, который не находится в базе данных, запрос возвращает правильный ответ.

Во втором запросе я хочу получить ответ, который должен быть списком OrderID, который содержит два разных ProductID.

Вы можете мне помочь? Спасибо

+2

Использование LIKE оператора с целочисленным параметром, кажется немного странным. Вероятно, вы должны вместо этого использовать EmployeeID = @id. – Cortright

+0

, к сожалению, он тоже не работает. –

+3

Несколько предложений: создайте отдельную SO-почту для каждого sp/вопроса ... Для SP # 1 измените имя входного параметра - мне не ясно, относится ли это идентификатор сотрудника, идентификатор заказа и т. Д. .... Также для SP # 1 у вас есть 2 возможных набора возврата, и у них нет соответствующих столбцов. Что произойдет, если ваше приложение попытается ссылаться на столбец в возвращаемом наборе, который не существует? – DMason

ответ

0

Я думаю, что это будет ответить на ваш первый вопрос

IF EXISTS(SELECT EmployeeID FROM Orders WHERE EmployeeID [email protected]) 
BEGIN 
    SELECT OrderID FROM Orders WHERE EmployeeID [email protected] 
END 

ELSE 
    BEGIN 
     SELECT OrderID, EmployeeID FROM Orders 
    END 

Второй запрос должен быть чем-то вроде этого:

SELECT OrderID FROM where ProductID IN (@id1, @id2) 
+0

@ Петр - вам нужно сообщить нам - работает или нет. – Yuri

+0

Большое спасибо. Извините за поздний ответ, я был AFK в течение 2 дней;) –

Смежные вопросы