Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
Топик располагается на нескольких страницах: [1] 2 вперед Ctrl→ все |
Amadeus404 Member Откуда: Сообщений: 18 |
Доброго времени суток. есть таблицы 1) семья. в ней находятся все члены семьи, обедененые одним идентификатором 2) носитель льготы. в ней находиться носитель льготы и количество льготников на которых она распространяется. Нужно создать запрос, чтобы выводил членов семьи, исключая носителя льготы. Если количество льготников меньше количества членов семьи, исключал с приоритетом на фамилию табл: носитель льготы носитель льготы |кол-во льготников ______________________ Пупкин Вася | 3 табл: Семья Пупкин Петя Пупкин Вася Пупкина Катя Жердева Кристина результат: Пупкина Катя Пупкин Петя |
13 сен 13, 09:48 [14834724] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104760 |
- Пупкин и Пупкина тоже вообщето различаются. Как определять, что фамилии одинаковые - И что будет с "исключал с приоритетом на фамилию", если у всех будет одна фамилия |
13 сен 13, 09:54 [14834759] Ответить | Цитировать Сообщить модератору |
Amadeus404 Member Откуда: Сообщений: 18 |
Glory, 1) вроде как решается оператором like '%слово%' 2) в таком случае по порядку... проще говоря не важно какие попадут, а какие нет |
13 сен 13, 09:57 [14834767] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104760 |
Т.е. Пупкиновский тоже станет Пупкиным ? И Запупкинский ? |
||
13 сен 13, 10:00 [14834783] Ответить | Цитировать Сообщить модератору |
Гость333 Member Откуда: Сообщений: 3683 |
А как быть, если в семье одна женщина "Пупкина", пять мужчин "Пупкин", пусть все льготники, и именно "Пупкина" является носителем льготы? |
||
13 сен 13, 10:03 [14834794] Ответить | Цитировать Сообщить модератору |
Cygapb-007 Member Откуда: Сообщений: 1677 |
Почему обязательно LIKE? Может быть, DIFFERENCE() ? |
13 сен 13, 10:08 [14834824] Ответить | Цитировать Сообщить модератору |
Amadeus404 Member Откуда: Сообщений: 18 |
Если бы я знал как быть, я бы не задавал вопросы =\ |
||||
13 сен 13, 10:27 [14834939] Ответить | Цитировать Сообщить модератору |
invm Member Откуда: Москва Сообщений: 9633 |
|
||
13 сен 13, 10:31 [14834968] Ответить | Цитировать Сообщить модератору |
Amadeus404 Member Откуда: Сообщений: 18 |
Нет не станет, у каждого носителя льготы есть индетификатор, который совпадает с индетификаторами всех членов семьи |
||||
13 сен 13, 10:31 [14834975] Ответить | Цитировать Сообщить модератору |
Гость333 Member Откуда: Сообщений: 3683 |
Насколько я знаю, эта функция учитывает только согласные. Т.е. с точки зрения этой функции, "Иванов" и "Овинов" — одинаковые фамилии. |
||
13 сен 13, 10:31 [14834977] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104760 |
носитель льготы |кол-во льготников ______________________ Пупкин Вася | 3 табл: Семья Пупкин Петя Пупкинский Вася Запупкина Катя Жердева Кристина Результат Пупкин Петя Пупкинский Вася Запупкина Катя потому что "вроде как решается оператором like '%слово%'" |
||
13 сен 13, 10:33 [14834987] Ответить | Цитировать Сообщить модератору |
Amadeus404 Member Откуда: Сообщений: 18 |
не надо усложнять... |
||||
13 сен 13, 10:33 [14834990] Ответить | Цитировать Сообщить модератору |
Гость333 Member Откуда: Сообщений: 3683 |
Как быть? Исправить дизайн БД, на текущей схеме всё плохо. |
||
13 сен 13, 10:35 [14834998] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104760 |
Хорошая позиция Что же у вас тогда не получается, если все так просто ? Всего то надо сделать select top (@x) where семья like '%Носитель льготы%' |
||
13 сен 13, 10:36 [14835007] Ответить | Цитировать Сообщить модератору |
invm Member Откуда: Москва Сообщений: 9633 |
|
||
13 сен 13, 10:39 [14835026] Ответить | Цитировать Сообщить модератору |
Amadeus404 Member Откуда: Сообщений: 18 |
в таблице семья всегда будет сам носитель льготы. Выбрать нужно будет кол-во льготников(3) - носитель льготы(1) = 2 Если нет полного совпадения фамилии, то не принципиально важно какие будут выбраны. |
||||
13 сен 13, 10:40 [14835030] Ответить | Цитировать Сообщить модератору |
Amadeus404 Member Откуда: Сообщений: 18 |
Не совсем понял тебя. Можно более развернутый ответ на данном примере |
||||
13 сен 13, 10:44 [14835063] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104760 |
Что именно вам не понятно ? Для каждой записи из "Носитель льготы" выполнить запрос из таблицы "Семья" top ("кол-во льготников") и вашими "не надо усложнять" условиям упорядочивания, которые расставят всех членов семьи в праильном порядке |
13 сен 13, 10:55 [14835149] Ответить | Цитировать Сообщить модератору |
Amadeus404 Member Откуда: Сообщений: 18 |
Вот так выглядит сцепка двух таблиц носитель льготы кол-во льготн ID Семья АБАЕВ АРКАДИЙ ВАСИЛЬЕВИЧ 5 230474 АБАЕВА ЕЛЕНА ВАСИЛЬЕВНА АБАЕВ АРКАДИЙ ВАСИЛЬЕВИЧ 5 230474 АБАЕВ АРКАДИЙ ВАСИЛЬЕВИЧ АБАЕВ АРКАДИЙ ВАСИЛЬЕВИЧ 5 230474 АБАЕВА ТАТЬЯНА ЛЬВОВНА АБАЕВ АРКАДИЙ ВАСИЛЬЕВИЧ 5 230474 АБАЕВ ЕВГЕНИЙ ВАСИЛЬЕВИЧ АБАЕВ АРКАДИЙ ВАСИЛЬЕВИЧ 5 230474 АБАЕВА СВЕТЛАНА ВАСИЛЬЕВНА АБАТУРОВА ЗОЯ ДМИТРИЕВНА 2 230474 АБАТУРОВ АЛЕКСАНДР ЕВГЕНЬЕВИЧ АБАТУРОВА ЗОЯ ДМИТРИЕВНА 2 230474 АБАТУРОВА ЗОЯ ДМИТРИЕВНА .... естественно таких записей +100500 |
||||
13 сен 13, 10:58 [14835172] Ответить | Цитировать Сообщить модератору |
Amadeus404 Member Откуда: Сообщений: 18 |
Glory, извини, там у двух последних ID должны отличаться от первых |
13 сен 13, 11:00 [14835200] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104760 |
Ценность этой информации равна нулю |
||
13 сен 13, 11:03 [14835230] Ответить | Цитировать Сообщить модератору |
StarikNavy Member Откуда: Москва Сообщений: 2396 |
Amadeus404, ФИО у вас в одном поле хранится??? иванова иван иваныча тоже по like отличать будете? |
13 сен 13, 11:06 [14835255] Ответить | Цитировать Сообщить модератору |
Amadeus404 Member Откуда: Сообщений: 18 |
твои ответы тоже не так полны как хотелось бы. Мне совершенно не ясно, как я мне все это автоматизировать. |
||||
13 сен 13, 11:08 [14835272] Ответить | Цитировать Сообщить модератору |
Amadeus404 Member Откуда: Сообщений: 18 |
нет ФИО в разных полях |
||
13 сен 13, 11:09 [14835282] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104760 |
Что "это" ? Написание запроса ? Чтнение ответов ? Изучение синтаксиса ? Наишите для вашего примера из первого сообщения запрос, который выведет всех членов семьи в порядке убывания приоритета на льготу |
||
13 сен 13, 11:11 [14835298] Ответить | Цитировать Сообщить модератору |
Топик располагается на нескольких страницах: [1] 2 вперед Ctrl→ все |
Все форумы / Microsoft SQL Server | ![]() |