Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
ksm54 Member Откуда: Сообщений: 6 |
всем привет. есть прога, которая выбирает данные из таблицы аккаунтов по фамилии, имени и ДР. при поиске используется LIKE. пользователь ищет Сорняк Иван 24-10-1972, запроc к базе идет как select * from table_acc where FIRST_NAME like 'Иван%' and LAST_NAME='Сорняк%' and BIRTH_DATE='24-10-1972' получаем: Сорняк Иван 24-10-1972 Сорняков Иван 24-10-1972 нужно найти и посчитать вот такие похожие записи что-то типа такого (конечно так не работает) select * from table_acc a1,table_acc a2 where a1.BIRTH_DATE=a2.BIRTH_DATE and a1.LAST_NAME like a2.LAST_NAME% and a1.FIRST_NAME like a2.FIRST_NAME% поделитесь, пожалуйста, мыслями, как это можно оформить в запрос? |
28 июн 17, 13:22 [20596534] Ответить | Цитировать Сообщить модератору |
msLex Member Откуда: Сообщений: 8730 |
Так вы же нашли их уже, для "посчитать" просто * на count(*) замените. |
||
28 июн 17, 13:26 [20596553] Ответить | Цитировать Сообщить модератору |
ksm54 Member Откуда: Сообщений: 6 |
msLex, как раз и не нашли, нужно таблицу саму на себя завернуть со сравнением по LIKE, а LIKE так не работает. |
28 июн 17, 13:30 [20596568] Ответить | Цитировать Сообщить модератору |
tashkafox Member Откуда: Москва Сообщений: 106 |
msLex, a2.LAST_NAME + '%' |
28 июн 17, 13:31 [20596570] Ответить | Цитировать Сообщить модератору |
iap Member Откуда: Москва Сообщений: 47052 |
ksm54, BIRTH_DATE какого типа? А то пишете дату в очень специфическом формате |
28 июн 17, 13:37 [20596592] Ответить | Цитировать Сообщить модератору |
ksm54 Member Откуда: Сообщений: 6 |
tashkafox, увы, не то, находятся только одинаковые |
28 июн 17, 13:50 [20596641] Ответить | Цитировать Сообщить модератору |
ksm54 Member Откуда: Сообщений: 6 |
iap, это для примера, формат 1961-02-04 00:00:00.0000000 |
28 июн 17, 13:51 [20596644] Ответить | Цитировать Сообщить модератору |
msLex Member Откуда: Сообщений: 8730 |
вам для каждой записи нужно найти количество "похожих" что-ли? select a1.BIRTH_DATE, a1.LAST_NAME, a1.FIRST_NAME, count(*) from table_acc a1,table_acc a2 where a1.BIRTH_DATE=a2.BIRTH_DATE and a1.LAST_NAME like a2.LAST_NAME + '%' and a1.FIRST_NAME like a2.FIRST_NAME + '%' group by a1.BIRTH_DATE, a1.LAST_NAME, a1.FIRST_NAME |
||
28 июн 17, 13:59 [20596682] Ответить | Цитировать Сообщить модератору |
iap Member Откуда: Москва Сообщений: 47052 |
|
||
28 июн 17, 16:15 [20597315] Ответить | Цитировать Сообщить модератору |
ksm54 Member Откуда: Сообщений: 6 |
msLex, да, надо посчитать сколько неоднозначных строк выдается при поиске с использованием LIKE |
29 июн 17, 06:36 [20598403] Ответить | Цитировать Сообщить модератору |
ksm54 Member Откуда: Сообщений: 6 |
iap, datetime2(7) |
29 июн 17, 06:37 [20598404] Ответить | Цитировать Сообщить модератору |
Cammomile Member Откуда: Сообщений: 1214 |
SELECT COUNT(DISTINCT fiel1, field2,...) FROM |
||
29 июн 17, 11:13 [20598938] Ответить | Цитировать Сообщить модератору |
iap Member Откуда: Москва Сообщений: 47052 |
Надо писать '1972-10-24'. Или, как обычно, '19721024' или '1972-10-24T00:00:00.000' |
||
29 июн 17, 11:31 [20599021] Ответить | Цитировать Сообщить модератору |
iap Member Откуда: Москва Сообщений: 47052 |
|
||||
29 июн 17, 11:33 [20599038] Ответить | Цитировать Сообщить модератору |
Cammomile Member Откуда: Сообщений: 1214 |
Где такой синтаксис я понятия не имею, если честно. DECLARE @Table table (TheName varchar(50)) INSERT INTO @Table SELECT 'Иванов' INSERT INTO @Table SELECT 'Иванов' INSERT INTO @Table SELECT 'Иванов' INSERT INTO @Table SELECT 'Иванова' INSERT INTO @Table SELECT 'Каланова' INSERT INTO @Table SELECT 'Крузенштерн' SELECT COUNT( DISTINCT TheName) FROM @Table WHERE TheName like '%ано%' |
29 июн 17, 11:47 [20599104] Ответить | Цитировать Сообщить модератору |
Cammomile Member Откуда: Сообщений: 1214 |
А, я понял, там поля перечислять нелья. Ну тогда надо какой-то хэш мутить, раз автору на всю строку. |
29 июн 17, 11:49 [20599111] Ответить | Цитировать Сообщить модератору |
Alibek B. Member Откуда: Сообщений: 3834 |
distinctrow |
29 июн 17, 12:16 [20599211] Ответить | Цитировать Сообщить модератору |
Cammomile Member Откуда: Сообщений: 1214 |
Alibek B., в сукульсервере? DECLARE @Table table (TheName varchar(50), age int) INSERT INTO @Table SELECT 'Иванов', 30 INSERT INTO @Table SELECT 'Иванов', 30 INSERT INTO @Table SELECT 'Иванов', 30 INSERT INTO @Table SELECT 'Иванова', 33 INSERT INTO @Table SELECT 'Каланова', 35 INSERT INTO @Table SELECT 'Крузенштерн', 42 SELECT Count(1) FROM ( SELECT TheName, age FROM @Table WHERE TheName like '%ано%' group by TheName, age ) KK |
29 июн 17, 13:21 [20599443] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |