Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/8: Рейтинг темы: голосов - 8, средняя оценка - 4.50
49 / 31 / 2
Регистрация: 14.02.2013
Сообщений: 677

Как исключить дубли из выдачи запроса по двум столбцам

08.01.2018, 20:08. Показов 1600. Ответов 5

Студворк — интернет-сервис помощи студентам
Сделал консольное приложение, которое по запросу возвращает все вхождения ключевого слова. Пока запросы касались той части таблицы, где ключевое слово не повторяется в рамках одной строки, всё было норм. Когда я сделал запросы по тем частям, где встречаются повторы, например "CE278A" в одном столбце и "картридж CE278A чёрный" - в другом, появились две идентичные строки.
И решение я вижу такое:

Выдачу запроса писать в массив или коллекцию, или ещё что-то, у чего есть метод проверки существования элемента (Exist), таким образом будут отсеяны дубли, и уже затем циклом по всем элементам этой коллекции вывести значения в консоль.

Пока я не приступил, хочу поинтересоваться, может ли кто предложить более простой способ, без циклов, может ещё на уровне SQL-запроса как-то отсеять?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.01.2018, 20:08
Ответы с готовыми решениями:

Как исключить из одного запроса - данные другого запроса
Всем доброго времени суток. Есть некая база данных по трамвайному депо. В запросе выбирается водитель транспорта и трамвай. ...

Как отфильтровать по двум столбцам
Добрый день. Просьба сильно не пинать, работы с excel крайне мало. Сижу уже битый час, перегуглил все что только можно. ...

Как выполнить поиск по двум столбцам
У меня есть База данных, в ней таблица, как средствами PHP можно выполнить точный(т.е. если в поиск вбито слово Logi, а в базе лежит Login...

5
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18298 / 14222 / 5368
Регистрация: 17.03.2014
Сообщений: 28,900
Записей в блоге: 1
08.01.2018, 20:22
SrgKord, значит ты как-то не так написал запрос. Обычный WHERE Column1 LIKE '%smth%' OR Column2 LIKE '%smth%' вернет ровно одну строку в случае совпадения в одной из колонок или в обоих.

Добавлено через 2 минуты
Возможно ты использовал два запроса с UNION?
0
49 / 31 / 2
Регистрация: 14.02.2013
Сообщений: 677
09.01.2018, 03:51  [ТС]
OwenGlendower, мой запрос:
SQL
1
2
3
SELECT SupPARTN, SupNAIM, SupNOMEN, SupPRICE 
FROM Supply_List 
WHERE SupPARTN LIKE @Query OR SupNAIM LIKE @Query OR SupNOMEN LIKE @Query OR SupPRICE LIKE @Query
Добавлено через 54 секунды
Возвращает все вхождения строки, включая и дублирующие по разным столбцам.
0
Эксперт .NET
 Аватар для Usaga
14313 / 9393 / 1355
Регистрация: 21.01.2016
Сообщений: 35,424
09.01.2018, 07:10
SrgKord, такой запрос физически не может возвращать дубликаты.
0
49 / 31 / 2
Регистрация: 14.02.2013
Сообщений: 677
09.01.2018, 10:05  [ТС]
Цитата Сообщение от Usaga Посмотреть сообщение
такой запрос физически не может возвращать дубликаты.
Я разобрался. Я же сделал возможность писать через запятую несколько ключевых слов, например "озу, память, ddr", и программа эту строку режет, и для каждого элемента делает запрос! Вот откуда дубли! Она для озу находит набор, выдаёт, потом для ddr этот же набор находит, выдаёт.
Значит мне всё же придётся делать проверку дублей перед выдачей на консоль. А массив ключевых слов в запрос можно отправить?
0
Эксперт .NET
 Аватар для Usaga
14313 / 9393 / 1355
Регистрация: 21.01.2016
Сообщений: 35,424
09.01.2018, 10:14
SrgKord, массив-то передать можно, но его нельзя будет использовать в выражении LIKE, только в IN:

SQL
1
SELECT * FROM [TABLE_NAME] WHERE someField IN ('ONE', 'TWO', 'THREE')
Т.е. можно будет искать только по точному совпадению.

Простейшее решение, что я с наскока вижу: сформировать пачку запросов и объеденить их через UNION, что уберёт дубликаты. Среди запрашиваемых полей желательно добавить ID записей.

Добавлено через 1 минуту
А ещё лучше сесть и как следует подумать. Потому что текущий способ решения задачи выглядит так себе.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.01.2018, 10:14
Помогаю со студенческими работами здесь

Объединение по двум столбцам, как сделать?
CREATE TABLE IF NOT EXISTS `letters` ( `id` int(12) NOT NULL AUTO_INCREMENT, `lid` int(12) NOT NULL DEFAULT '0', `timemess`...

Исключить дубли при добавлении
Помогите сделать запрос чтобы когда ключ 'Key' в базе уже есть писал что это дубль и не добавлял его. private void...

Организовать поиск по двум столбцам по типу LIKE как в SQL, но с использованием LINQ
Доброго времени суток уважаемые форумчане! Вопрос: 1. Есть БД с таблицей содержащей поля Name(nvarchar(100) и Text(nvarchar(MAX)); ...

Как исключить накладные из запроса
Конфигурация Тогрговля и Склад 7.7, релиз 942. Товарный отчет, в процедуре Сформировать есть запрос. Из него нада исключить Документ...

ПартииТоваровНаСкладах Как исключить документы из запроса?
Добрый день. Пишу запрос по регистру "Партии товаров на складах" и хочу из него исключить некоторые ВидыОпераций. Может я что то не так...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере нетипового документа выдачи шин для спецтехники с табличной частью, разработанного в конфигурации КА2. Данные берутся из. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru