Хранимая процедура MS SQL для получения значения

#sql #sql-server

#sql #sql-сервер

Вопрос:

У меня есть 3 таблицы

 Staff table:

EmpId   CandidateId
------------------------
  1          2


Candidate table:

CandidateId    Firstname    Last name    CountryId   PassportCountry
--------------------------------------------------------------------
     1           Mark        Antony          2            3           
     2           Joy         terry           1            3

Country:

CountryId      Name
---------------------------
    1           USA
    2           UK
    3           Australia
 

Пользователь передаст EmpId в строку запроса, которая мне нужна, чтобы показать детали кандидата в соответствии с empId . У меня есть только одна country таблица, и я использую эту таблицу для country страны passportport. Поэтому мне нужно получить country name , когда я получу значение кандидата.

Как написать хранимую процедуру для получения сведений о кандидате. Я не силен в sql. Можете ли вы, ребята, помочь мне в этом. Заранее спасибо.

Привет, я попробовал приведенный ниже скрипт, чтобы получить название страны и название страны паспорта. Я могу получить название страны, но не страну паспорта.

 SELECT 
FirstName,
LastName,
PassportCountry,
Country.CountryName as Country
from Candidate 
inner join Country
on country.CountryId=candidate.country
where CandidateId=@CandidateId;
 

Комментарии:

1. Покажите нам, что вы пробовали.

2. Какой SQL вы пробовали? Каков был результат?

3. Привет, я попробовал приведенный ниже скрипт, чтобы получить название страны и название страны паспорта. Я могу получить название страны, но не страну паспорта.

4. Ответ ниже. Одна вещь, которую я заметил, ваша Staff таблица не используется…

Ответ №1:

Это должно помочь вам двигаться в правильном направлении.

В принципе, поскольку вы дважды ссылаетесь на таблицу Country, вам нужно дважды присоединиться к ней.

 declare @staff table (EmpId int, CandidateId int)
insert into @staff values (1, 2 )

declare @Candidate table (CandidateId int, Firstname nvarchar(50), Lastname nvarchar(50), CountryId int, PassportCountry int)
insert into @Candidate
values (1, 'Mark', 'Antony', 2, 3),
       (2, 'Joy', 'Terry', 1, 3)

declare @Country table (CountryId int, Name nvarchar(50))
insert into @Country 
values (1, 'USA'),
       (2, 'UK'),
       (3, 'Australia')


declare @empID int
set @empID = 1

SELECT 
FirstName,
LastName,
t2.Name as PersonCountry,
t3.Name as PassportCountry
from @staff s
inner join @Candidate t1 on s.CandidateId = t1.CandidateId
inner join @Country t2 on t1.CountryId=t2.CountryId
inner join @Country t3 on t1.PassportCountry=t3.CountryId
where s.EmpId=@empID;
 

Комментарии:

1. Привет, спасибо за помощь, она работает нормально. Пользователь передаст EmpID в строке запроса, мне нужно показать данные кандидата в соответствии с EmpID. Можете ли вы, пожалуйста, помочь мне в этом. Заранее спасибо.

2. Обновлено для использования empID .