2015-02-09 2 views
0

у меня есть 3 таблицы в SQL Server, как показано ниже:Создать таблицу с несколькими условиями в SQL Server

EnquiryTable:

EndID FyYear SNo ServiceID MaterialID 
55 2015 1 1   1 
55 2015 2 5   3 

ServiceTable:

ServiceID ServiceName 
1   ServiceA 
2   ServiceB 
3   ServiceC 
4   ServiceD 
5   ServiceE 

Material стол:

MaterialID MaterialName 
1   MaterialA 
2   MaterialB 
3   MaterialC 

Мне нужно вернуть таблицу, как показано ниже, с stored procedure, так что эта таблица поможет в конечном итоге связать gridview.

Результат таблицы:

SNo ServiceName MaterialName 
1 ServiceA  MaterialA 
2 ServiceE  MaterialC 

В основном нужна процедура, которая будет сравнить с ServiceIds, MaterialIdsEnquiryTable с ServiceTable и MaterialTable, и вернуться обратно результирующую таблицу с ServiceNames и MaterialNames.

Я пытался что-то вроде, как показано ниже:

declare @serviceID int 
declare @matID int 
select sno, [email protected],[email protected] from dbo.enquirytable 

но @serviceID, @matID переменные возвращаются в null.

Эксперты, пожалуйста, помогите.

Я использую SQL Server 2008 R2.

С уважением

+0

Вы можете найти это полезным https://msdn.microsoft.com/en-us/library/ms345415.aspx –

ответ

2

Вы должны создать процедуру, используя CREATE PROC SQL ключевое слово, а затем использовать EXEC для выполнения хранимой процедуры. Ваш выбранный запрос и логика должны быть частью хранимой процедуры.

CREATE PROC proc_NAME 
@enqID int, @fyYear int 
AS 
BEGIN 
    SELECT E.SNO , S.ServiceName, M.MaterialName 
    FROM EnquiryTable E 
    INNER JOIN Service S ON E.ServiceID = S.ServiceID 
    INNER JOIN Material M ON E.MaterialID = M.MaterialID 
    WHERE [email protected] AND [email protected] 
END 

вы можете выполнить это хранимая процедура, как

exec proc_NAME @enqID,@fyYear 
+0

привет, спасибо за ответ , Я могу только передать enqID и fyYear в процедуру как params. Вы можете увидеть в enquiryTable, что enqID = 55 и fyYear = 2015. С этими двумя параметрами я получаю 2 строки в EnquiryTable, я должен заменить идентификаторы службы, идентификаторы материалов в этих двух строках с именами сервисов и материалов из таблиц сервисов и материалов. Вы поняли, чего я пытаюсь достичь? – Anurag

+0

проверить изменить ответ – HaveNoDisplayName

+0

Спасибо, Piyush, я понял. я очень хорошо знаю, как создать хранимую процедуру, но просто написал вопрос вроде этого, потому что я пытался несколько штук. В любом случае спасибо за ответ, я соглашусь с ним. – Anurag

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