Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Запрос на выборку  [new]
Amadeus404
Member

Откуда:
Сообщений: 18
Доброго времени суток.

есть таблицы
1) семья. в ней находятся все члены семьи, обедененые одним идентификатором
2) носитель льготы. в ней находиться носитель льготы и количество льготников на которых она распространяется.
Нужно создать запрос, чтобы выводил членов семьи, исключая носителя льготы. Если количество льготников меньше количества членов семьи, исключал с приоритетом на фамилию

табл: носитель льготы

носитель льготы |кол-во льготников
______________________
Пупкин Вася | 3


табл: Семья

Пупкин Петя

Пупкин Вася

Пупкина Катя

Жердева Кристина


результат:

Пупкина Катя

Пупкин Петя
13 сен 13, 09:48    [14834724]     Ответить | Цитировать Сообщить модератору
 Re: Запрос на выборку  [new]
Glory
Member

Откуда:
Сообщений: 104760
- Пупкин и Пупкина тоже вообщето различаются. Как определять, что фамилии одинаковые
- И что будет с "исключал с приоритетом на фамилию", если у всех будет одна фамилия
13 сен 13, 09:54    [14834759]     Ответить | Цитировать Сообщить модератору
 Re: Запрос на выборку  [new]
Amadeus404
Member

Откуда:
Сообщений: 18
Glory, 1) вроде как решается оператором like '%слово%'
2) в таком случае по порядку... проще говоря не важно какие попадут, а какие нет
13 сен 13, 09:57    [14834767]     Ответить | Цитировать Сообщить модератору
 Re: Запрос на выборку  [new]
Glory
Member

Откуда:
Сообщений: 104760
Amadeus404
1) вроде как решается оператором like '%слово%'

Т.е. Пупкиновский тоже станет Пупкиным ? И Запупкинский ?
13 сен 13, 10:00    [14834783]     Ответить | Цитировать Сообщить модератору
 Re: Запрос на выборку  [new]
Гость333
Member

Откуда:
Сообщений: 3683
Amadeus404
1) вроде как решается оператором like '%слово%'

А как быть, если в семье одна женщина "Пупкина", пять мужчин "Пупкин", пусть все льготники, и именно "Пупкина" является носителем льготы?
13 сен 13, 10:03    [14834794]     Ответить | Цитировать Сообщить модератору
 Re: Запрос на выборку  [new]
Cygapb-007
Member

Откуда:
Сообщений: 1677
Почему обязательно LIKE? Может быть, DIFFERENCE() ?
13 сен 13, 10:08    [14834824]     Ответить | Цитировать Сообщить модератору
 Re: Запрос на выборку  [new]
Amadeus404
Member

Откуда:
Сообщений: 18
Гость333
Amadeus404
1) вроде как решается оператором like '%слово%'

А как быть, если в семье одна женщина "Пупкина", пять мужчин "Пупкин", пусть все льготники, и именно "Пупкина" является носителем льготы?

Если бы я знал как быть, я бы не задавал вопросы =\
13 сен 13, 10:27    [14834939]     Ответить | Цитировать Сообщить модератору
 Re: Запрос на выборку  [new]
invm
Member

Откуда: Москва
Сообщений: 9633
Amadeus404
Если количество льготников меньше количества членов семьи, исключал с приоритетом на фамилию
Жена не стала брать фамилию мужа, а детям они дают двойную фамилию. Также в семью входят три n-юродных брата мужа одинаковой с ним фамилии. Кого исключать будете?
13 сен 13, 10:31    [14834968]     Ответить | Цитировать Сообщить модератору
 Re: Запрос на выборку  [new]
Amadeus404
Member

Откуда:
Сообщений: 18
Glory
Amadeus404
1) вроде как решается оператором like '%слово%'

Т.е. Пупкиновский тоже станет Пупкиным ? И Запупкинский ?

Нет не станет, у каждого носителя льготы есть индетификатор, который совпадает с индетификаторами всех членов семьи
13 сен 13, 10:31    [14834975]     Ответить | Цитировать Сообщить модератору
 Re: Запрос на выборку  [new]
Гость333
Member

Откуда:
Сообщений: 3683
Cygapb-007
Почему обязательно LIKE? Может быть, DIFFERENCE() ?

Насколько я знаю, эта функция учитывает только согласные. Т.е. с точки зрения этой функции, "Иванов" и "Овинов" — одинаковые фамилии.
13 сен 13, 10:31    [14834977]     Ответить | Цитировать Сообщить модератору
 Re: Запрос на выборку  [new]
Glory
Member

Откуда:
Сообщений: 104760
Amadeus404
Нет не станет, у каждого носителя льготы есть индетификатор, который совпадает с индетификаторами всех членов семьи

носитель льготы |кол-во льготников
______________________
Пупкин Вася | 3


табл: Семья

Пупкин Петя
Пупкинский Вася
Запупкина Катя
Жердева Кристина

Результат
Пупкин Петя
Пупкинский Вася
Запупкина Катя

потому что "вроде как решается оператором like '%слово%'"
13 сен 13, 10:33    [14834987]     Ответить | Цитировать Сообщить модератору
 Re: Запрос на выборку  [new]
Amadeus404
Member

Откуда:
Сообщений: 18
invm
Amadeus404
Если количество льготников меньше количества членов семьи, исключал с приоритетом на фамилию
Жена не стала брать фамилию мужа, а детям они дают двойную фамилию. Также в семью входят три n-юродных брата мужа одинаковой с ним фамилии. Кого исключать будете?

не надо усложнять...
13 сен 13, 10:33    [14834990]     Ответить | Цитировать Сообщить модератору
 Re: Запрос на выборку  [new]
Гость333
Member

Откуда:
Сообщений: 3683
Amadeus404
Если бы я знал как быть, я бы не задавал вопросы =\

Как быть? Исправить дизайн БД, на текущей схеме всё плохо.
13 сен 13, 10:35    [14834998]     Ответить | Цитировать Сообщить модератору
 Re: Запрос на выборку  [new]
Glory
Member

Откуда:
Сообщений: 104760
Amadeus404
не надо усложнять...

Хорошая позиция
Что же у вас тогда не получается, если все так просто ?
Всего то надо сделать select top (@x) where семья like '%Носитель льготы%'
13 сен 13, 10:36    [14835007]     Ответить | Цитировать Сообщить модератору
 Re: Запрос на выборку  [new]
invm
Member

Откуда: Москва
Сообщений: 9633
Amadeus404
не надо усложнять...
Ну да, конечно. Простой сменой фамилии при женитьбе/замужестве человек может автоматом лишиться льготы. И это называется "не нужно усложнять".
13 сен 13, 10:39    [14835026]     Ответить | Цитировать Сообщить модератору
 Re: Запрос на выборку  [new]
Amadeus404
Member

Откуда:
Сообщений: 18
Glory
Amadeus404
Нет не станет, у каждого носителя льготы есть индетификатор, который совпадает с индетификаторами всех членов семьи

носитель льготы |кол-во льготников
______________________
Пупкин Вася | 3


табл: Семья

Пупкин Петя
Пупкинский Вася
Запупкина Катя
Жердева Кристина

Результат
Пупкин Петя
Пупкинский Вася
Запупкина Катя

потому что "вроде как решается оператором like '%слово%'"

в таблице семья всегда будет сам носитель льготы. Выбрать нужно будет кол-во льготников(3) - носитель льготы(1) = 2
Если нет полного совпадения фамилии, то не принципиально важно какие будут выбраны.
13 сен 13, 10:40    [14835030]     Ответить | Цитировать Сообщить модератору
 Re: Запрос на выборку  [new]
Amadeus404
Member

Откуда:
Сообщений: 18
Glory
Amadeus404
не надо усложнять...

Хорошая позиция
Что же у вас тогда не получается, если все так просто ?
Всего то надо сделать select top (@x) where семья like '%Носитель льготы%'

Не совсем понял тебя. Можно более развернутый ответ на данном примере
13 сен 13, 10:44    [14835063]     Ответить | Цитировать Сообщить модератору
 Re: Запрос на выборку  [new]
Glory
Member

Откуда:
Сообщений: 104760
Что именно вам не понятно ?
Для каждой записи из "Носитель льготы" выполнить запрос из таблицы "Семья" top ("кол-во льготников") и вашими "не надо усложнять" условиям упорядочивания, которые расставят всех членов семьи в праильном порядке
13 сен 13, 10:55    [14835149]     Ответить | Цитировать Сообщить модератору
 Re: Запрос на выборку  [new]
Amadeus404
Member

Откуда:
Сообщений: 18
Amadeus404
Glory
пропущено...

Хорошая позиция
Что же у вас тогда не получается, если все так просто ?
Всего то надо сделать select top (@x) where семья like '%Носитель льготы%'

Не совсем понял тебя. Можно более развернутый ответ на данном примере


Вот так выглядит сцепка двух таблиц

носитель льготы кол-во льготн ID Семья
АБАЕВ АРКАДИЙ ВАСИЛЬЕВИЧ 5 230474 АБАЕВА ЕЛЕНА ВАСИЛЬЕВНА
АБАЕВ АРКАДИЙ ВАСИЛЬЕВИЧ 5 230474 АБАЕВ АРКАДИЙ ВАСИЛЬЕВИЧ
АБАЕВ АРКАДИЙ ВАСИЛЬЕВИЧ 5 230474 АБАЕВА ТАТЬЯНА ЛЬВОВНА
АБАЕВ АРКАДИЙ ВАСИЛЬЕВИЧ 5 230474 АБАЕВ ЕВГЕНИЙ ВАСИЛЬЕВИЧ
АБАЕВ АРКАДИЙ ВАСИЛЬЕВИЧ 5 230474 АБАЕВА СВЕТЛАНА ВАСИЛЬЕВНА
АБАТУРОВА ЗОЯ ДМИТРИЕВНА 2 230474 АБАТУРОВ АЛЕКСАНДР ЕВГЕНЬЕВИЧ
АБАТУРОВА ЗОЯ ДМИТРИЕВНА 2 230474 АБАТУРОВА ЗОЯ ДМИТРИЕВНА
....
естественно таких записей +100500
13 сен 13, 10:58    [14835172]     Ответить | Цитировать Сообщить модератору
 Re: Запрос на выборку  [new]
Amadeus404
Member

Откуда:
Сообщений: 18
Glory, извини, там у двух последних ID должны отличаться от первых
13 сен 13, 11:00    [14835200]     Ответить | Цитировать Сообщить модератору
 Re: Запрос на выборку  [new]
Glory
Member

Откуда:
Сообщений: 104760
Amadeus404
Glory, извини, там у двух последних ID должны отличаться от первых

Ценность этой информации равна нулю
13 сен 13, 11:03    [14835230]     Ответить | Цитировать Сообщить модератору
 Re: Запрос на выборку  [new]
StarikNavy
Member

Откуда: Москва
Сообщений: 2396
Amadeus404,

ФИО у вас в одном поле хранится???
иванова иван иваныча тоже по like отличать будете?
13 сен 13, 11:06    [14835255]     Ответить | Цитировать Сообщить модератору
 Re: Запрос на выборку  [new]
Amadeus404
Member

Откуда:
Сообщений: 18
Glory
Amadeus404
Glory, извини, там у двух последних ID должны отличаться от первых

Ценность этой информации равна нулю

твои ответы тоже не так полны как хотелось бы. Мне совершенно не ясно, как я мне все это автоматизировать.
13 сен 13, 11:08    [14835272]     Ответить | Цитировать Сообщить модератору
 Re: Запрос на выборку  [new]
Amadeus404
Member

Откуда:
Сообщений: 18
StarikNavy
Amadeus404,

ФИО у вас в одном поле хранится???
иванова иван иваныча тоже по like отличать будете?

нет ФИО в разных полях
13 сен 13, 11:09    [14835282]     Ответить | Цитировать Сообщить модератору
 Re: Запрос на выборку  [new]
Glory
Member

Откуда:
Сообщений: 104760
Amadeus404
твои ответы тоже не так полны как хотелось бы. Мне совершенно не ясно, как я мне все это автоматизировать.

Что "это" ? Написание запроса ? Чтнение ответов ? Изучение синтаксиса ?
Наишите для вашего примера из первого сообщения запрос, который выведет всех членов семьи в порядке убывания приоритета на льготу
13 сен 13, 11:11    [14835298]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить