2015-02-20 3 views
0

У меня есть эти таблицы в моей базе данныхВыберите запрос от многих ко многим отношений

enter image description here

Моя хранимая процедура

ALTER procedure [dbo].[SearchEmployee] 
     @Name varchar(155), 
     @Gender varchar(50), 
     @MaterialStatus varchar(50), 
     @DOB date, 
     @Designation varchar(155), 
     @Salary money 
AS 
    SET NOCOUNT OFF; 
    BEGIN 
     SELECT 
      intEmployeeId, 
      (vchFirstName + ' ' + ISNULL(vchMiddleName,' ') + ' ' +   vchLastName) AS Name, 
      vchGender , 
      vchMaterialStatus, 
      dtDOB, 
      vchDesignation, 
      intSalary, 
      dtmCreatedDate, 
      bitActive, 
      F.vchFilename As FileName , 
      F.intFileid As Fileid 
     FROM 
      Employee AS E 
     FULL OUTER JOIN 
      EmployeeFiles AS EF ON e.intEmployeeId = EF.intEmployeeIds 
     FULL OUTER JOIN 
      Files AS F ON EF.intFileids = F.intFileid 
     WHERE 
      vchFirstName LIKE @Name OR 
      vchMiddleName LIKE @Name OR 
      vchLastName LIKE @Name 
    END 

Этот запрос возвращает только один ряд

exec SearchEmployee @Name='m', @Gender=NULL, @MaterialStatus=NULL, 
        @DOB='0001-01-01', @Designation=NULL, @Salary=NULL 

У меня есть несколько сотрудников с именем, содержащим символ m Acter. Как получить все строки из базы данных?

+0

лучше установить NOCOUNT ON – sqluser

+0

ОТ Employee AS E LEFT JOIN EmployeeFiles AS EF ON e.intEmployeeId = EF.intEmployeeIds LEFT JOIN Файлы AS F ON E.intFileids = F.intFileid change full oter to left join и соединение файлов неверно вместо EE.intFeilds использовать E.intFeilds – KumarHarsh

ответ

2

Из чего я понимаю, что вам нужно получить все записи, где содержится имя M. Поэтому вам нужно поставить символ дикой карты %, чтобы сообщить палачу, что % infront от M означает любое количество символов до M, а после M означает любое количество символов после M. Read more about it here

Так что вам нужно изменить ваш like условию

vchFirstName like '%'[email protected]+'%' OR 
    vchMiddleName like '%'[email protected]+'%' OR 
    vchLastName like '%'[email protected]+'%' 
Смежные вопросы