Поиск слова по всей базе данных10.07.2020, 11:57. Показов 17952. Ответов 11
Метки нет (Все метки)
Хорошего дня всем!
Сначала немного вводной информации. Есть приложение, написанное мной на VB.Net, которое работает с базой данных (пока это файл-access, но в дальнейшем можно будет подключиться к любому поддерживаемому программой источнику). Работа с базой построена на выполнении SQL-запросов. Захотелось реализовать контекстный поиск по всей базе. Начал гуглить (яндексить), нагуглил вот такую статейку MySQL. Поиск строки по всей базе. Так как я в SQL прямо скажу "не очень", то понял только следующее: автор для реализации поиска написал хранимую процедуру, поиск находит первое вхождение искомой строки и возвращает результат поиска в каком-то информационном виде. А теперь вопрос: как правильно организовать поиск текста по всем таблицам базы? Понятно, что вопрос очень общий, но тем не менее. Что требуется: поиск должен осуществляться по всем таблицам базы, причём индексные поля должны опускаться (а то поиск числа вернёт не верный результат); поиск должен возвращать информацию вида имя_таблицы - индекс строки; поиск должен возвращать все результаты совпадения, а не первое обнаруженное значение.Буду благодарен за любую помощь.
0
|
|
| 10.07.2020, 11:57 | |
|
Ответы с готовыми решениями:
11
Поиск по всей базе Поиск по всей базе Поиск по всей базе и вывод в таблицу |
| 10.07.2020, 15:36 | ||||
|
задача очень бредовая так как поиск в неиндексируемом поле займет у вас кучу времени
но почему нет - перебирайте список таблиц и ищите доставляет такая мечта
0
|
||||
|
3614 / 2135 / 756
Регистрация: 02.06.2013
Сообщений: 5,169
|
||
| 10.07.2020, 15:46 | ||
|
0
|
||
| 10.07.2020, 20:12 [ТС] | ||||
|
Добавлено через 35 минут Продолжая тему уникальности каждой СУБД я вижу только один вариант для решения моей (на самом деле не только моей) задачи, это создание хранимой процедуры и её вызов из программы. Такая процедура запросто может вернуть набор данных. qwertehok, Вы код в приведённой мной ссылке смотрели? Там реализован просмотр всех таблиц БД.
0
|
||||
|
3614 / 2135 / 756
Регистрация: 02.06.2013
Сообщений: 5,169
|
||
| 10.07.2020, 20:21 | ||
|
0
|
||
| 10.07.2020, 20:32 [ТС] | |
|
invm, а почему бы и нет. Вы когда на этом форуме пользуетесь поиском выбираете где именно искать? Конечно, в расширенном варианте поиска есть дополнительные параметры поиска, но в базовом-то этого нет и он "шуршит" везде, где только можно, а форум этот тоже БД!
0
|
|
|
3614 / 2135 / 756
Регистрация: 02.06.2013
Сообщений: 5,169
|
|
| 10.07.2020, 20:56 | |
|
Uswer, а вы на форуме ищете что-то в конкретном разделе (разделах), или предпочитаете получить 100500 страниц результатов глобальным поиском и до посинения искать среди них глазами нужную инфу?
По теме: гуглите по "sql server search data in all tables". Вариантов будет много разных.
0
|
|
| 10.07.2020, 21:51 [ТС] | ||
|
invm, по поводу первого - я думаю что пользователь не должен вникать в структуру данных, ибо на то он и поиск, что изначально не совсем понятно что мы ищем.
invm, по второй части ответа совсем печалька , попахивает нарушением п.3.3 правил форума. Я же писал в самом начале, что гуглить пробовал и нашёл массу инфы. Вот только конкретного решения не получил, везде одни обрывки кода под конкретные БД.Уважаемый invm, давайте не будем раздувать тему выяснением почему так, ответ краток "я так хочу". Просто помогите кодом, начнём с малого - закончим, ну чем закончим!
0
|
||
|
2810 / 1679 / 885
Регистрация: 14.04.2015
Сообщений: 5,723
|
|||||||||
| 11.07.2020, 10:19 | |||||||||
|
Uswer,
это обычная логика хранения данных в бд. и никак тут не происходит поиск чего-то невнятного по всей БД, а как раз таки наоборот. вот запрос для поиск значения для MSSQL, предусмотрен тип полей, в котором ты будешь искать значение.
0
|
|||||||||
| 11.07.2020, 11:29 [ТС] | ||
|
AndreyVorobey, спасибо за код, пошёл курить интернет чтобы всё это хотя бы понять.
AndreyVorobey, не очень люблю спорить, но сдержаться не могу. Вот Ваши слова: Всем, ребята я прекрасно понимаю, что тема в разделе SQL звучит как желание "поперек здравому смыслу", но попробуйте посмотреть на проблему моими глазами. У меня БД строилась под конкретные нужды и для решения основной задачи была спроектирована (слово-то какое) именно так как есть. Понятное дело, если бы я петрил в СУБД и в том, чем я занимаюсь по долгу службы, одинаково, то и БД была бы построена иначе, но в СУБД я нуб или так "неопытный пользователь". Однако БД уже используется и хранит данные и есть сильное желание расширить функционал программы контекстным поиском. Я без проблем мог бы реализовать поиск на уровне приложения, но это опять же противоречит здравому смыслу, т.к. в этом случае на уровне приложения придётся читать всю БД, а это, сами понимаете, не айс, особенно при многопользовательском доступе.
0
|
||
|
2810 / 1679 / 885
Регистрация: 14.04.2015
Сообщений: 5,723
|
|||||
| 11.07.2020, 12:09 | |||||
|
Uswer,
да, участвуют несколько таблиц, но это не значит, что при поиске проверяется каждое поле каждой таблицы, а то, что все эти таблицы связаны друг с другом ключевыми полями через JOIN, где установлено условие WHERE (грубо говоря - вывести пару полей из таблиц тема, вопрос, комментарий where поле из таблицы комментарий содержит текст который ввели в поле поиске) все, а дальше формируется datatable, который разбрасывает по интерфейсы в нужные места результат, но здесь уже sql никаким боком. не нужно каверкать мои слова. из самого определения четко видно
а ты хочешь ввести в поле любое значение, и запрос начнет искать по всем полям всех таблиц (вопрос про то, что типов данных множество, отпадает, так как запрос предусматривает поиск только определенных типов данных. потому что поиск по слову "авокадо" вылетит с ошибкой, как только дойдет до перебора поля "дата") а когда таблиц станет большое количество, и когда данные начнут совпадать по значению, но не по смысловой нагрузке, тогда что? а если ты хочешь делать это
0
|
|||||
| 11.07.2020, 21:27 [ТС] | |||||
JOIN и WHERE? Разве это не инструкции макроязыка SQL? Или для Вас SQL это "целый мир", а какой-то Where так пустяк?Считаю тему исчерпанной (хотя при здравом подходе есть о чём поговорить), предлагаю далее не вступать в перепалку. Основной посыл завсегдатаев Microsoft SQL Server мне ясен. Я признаю свою безграмотность в этом вопросе, у всех прошу прощения за отнятое время, всем хорошего настроения
0
|
|||||
| 11.07.2020, 21:27 | |
|
Помогаю со студенческими работами здесь
12
Поиск значения поля по всей базе Не получается сделать поиск по всей базе данных Поиск в базе данных по части слова - вывод в датагрид Поиск в базе и перенос всей таблицы Поиск известного изменения столбца и его изменение по всей базе Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11
— это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
|
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11
Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
|
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
|
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/
O1rJuneU_ls
https:/ / vkvideo. ru/ video-115721503_456239114
|
|
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ВВЕДЕНИЕ
Введу сокращения:
аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
|
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi
ветка по-частям.
коммит Create переделка под биомассу. txt
вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
|
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ *
Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях.
Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её.
Последовательность действий:. . .
|
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
|