SQL Создание задачи поиска - PullRequest
0 голосов
/ 01 апреля 2011

Как бы мне было объединить эти два утверждения?По сути, это поиск, я хочу, чтобы пользователь мог искать либо имя, компанию или заметки.Заметки в другой таблице под названием акт.Который имеет внешний ключ CID.Я хотел бы, чтобы он возвращал только те результаты, которые соответствуют заполненным.Так что поиск по имени: Боб отмечает: Гольф не вернет всех пользователей, у которых есть гольф в заметках, но вернет только кого-то с именем Боб и имеет гольф в поле заметок.

Проблема, ястолкнуться с тем, что если Notes возвращает более 1 строки, то это исключает возможность использования мной для 1-го оператора.

Я использую SQL-Server 2005. Спасибо

1-йОператор:

SELECT DISTINCT CID, Name, Comp, Email
From Con
Where (Name IS NULL OR Name  LIKE '%' + @name + '%')
AND   (Comp IS NULL or Comp LIKE '%' + @comp + '%')

2-й оператор:

If @notes <> ''
Begin
SET @newid = 
(
Select CID    
From Act
Where Note LIKE  '%' + @notes + '%'
)
Select DISTINCT CID, Name, Comp, Email
From Contacts  c
Where (CID= @newid) 
End

Ответы [ 2 ]

0 голосов
/ 01 апреля 2011
SELECT DISTINCT CID, Name, Comp, Email
From Con
Where (Name IS NULL OR Name  LIKE '%' + @name + '%')
AND   (Comp IS NULL or Comp LIKE '%' + @comp + '%')
UNION ALL
Select DISTINCT CID, Name, Comp, Email
From Contacts  c
Where (CID = (Select CID From Act Where @notes <> '' AND Note LIKE  '%' + @notes + '%')) 
0 голосов
/ 01 апреля 2011
SELECT DISTINCT CID, Name, Comp, Email
From Con
Where (Name IS NULL OR Name  LIKE '%' + @name + '%')
    AND   (Comp IS NULL or Comp LIKE '%' + @comp + '%')
    AND (
        @notes = ''
        OR EXISTS (
            Select CID    
            From Act
            Where Note LIKE  '%' + @notes + '%'
                AND @notes <> ''
                AND Act.CID = Con.CID
        )
    )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...