powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Поиск в таблице
4 сообщений из 4, страница 1 из 1
Поиск в таблице
    #32023864
Flamer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день, Уважаемые!

Опять безбожно туплю
Вся надежда на то, что кто-нибудь из отцов стукнет по голове хорошим ответом и тогда все встанет на свои места...

Такая задача:
есть таблица

PropertyID Value
1 Вася
1 Федя
1 Никанор
2 Петрович
2 Сидорович
2 Акакич
3 Иванов
3 Петров
3 Цыбулько

В данном вырожденном варианте соответственно, имеем ФИО. Итак, постановка вопроса: Надо устроить поиск таким образом (псевдокод хранимой процедуры):

CREATE PROCEDURE sp_FIOSearch
@Name varchar(100),
@MiddleName varchar(100),
@LastName varchar(100)
AS

-- Далее код процы.

Самое интересное, что надо поиск построить по И, то есть хранимой процедуре может быть передан как один параметр, так и комбинации "фамилия-имя", "имя-отчество", "фамилия-отчество". Ну и соответственно, могут быть переданы все три параметра скопом...

Собственно, чего-то я не пойму, как написать запрос, учитывая, что все данные храняться в одном поле таблицы с разными PropertyID (в нашем случае 1- Имя, 2- Отчество, 3- Фамилия)...

Собсно, громко взываю о помощи!
...
Рейтинг: 0 / 0
Поиск в таблице
    #32023866
MadDog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"чего-то я не пойму, как написать запрос"
Я то же не пойму по какому признаку "Вася" должен быть "Иванов" а не "Петров". По-моему поля не хватает.
...
Рейтинг: 0 / 0
Поиск в таблице
    #32023867
Flamer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Поле есть, не волнуйтесь... Я привел вырожденный пример... Главное, как даже на основе вырожденного примера построить нужный запрос... А поле (в вопрос) можно добавить, например, UserID...
...
Рейтинг: 0 / 0
Поиск в таблице
    #32023871
MadDog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Действительно, вырожденный случай...

CREATE PROCEDURE sp_FIOSearch
@Name varchar(100)
, @MiddleName varchar(100)
, @LastName varchar(100)
AS

declare @t table
(
UserID int
, PropertyID int
, Value varchar(100)
)

insert @t
select UserID, PropertyID, Value
from t
where PropertyID = 1 and Value = isnull(@Name, Value)
and PropertyID = 2 and Value = isnull(@MiddleName, Value)
and PropertyID = 3 and Value = isnull(@LastName, Value)

select t1.UserID
, Name = t1.Value
, MiddleName = t2.Value
, LastName = t3.Value
from @t t1
join @t t2 on t2.UserID = t1.UserID and t2.PropertyID = 2
join @t t3 on t3.UserID = t1.UserID and t3.PropertyID = 3
where t1.PropertyID = 1
GO
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Поиск в таблице
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]