powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / запрос поиск по строкам
10 сообщений из 10, страница 1 из 1
запрос поиск по строкам
    #39470660
tadeyiloda
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
есть таблицы
1 слово слово слово2слово слово слово
id userid text1 1 слово слово 22 слово слово
как мне получить записи из второй таблицы, с условием что text содержит все слова из любой записи первой таблицы
...
Рейтинг: 0 / 0
запрос поиск по строкам
    #39470675
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нормализуйте первую таблицу до состояния
Код: sql
1.
2.
3.
4.
5.
6.
7.
id, word_num, word
1,1,word1-1
2,2,word1-2
3,3,word1-3
4,1,word2-1
5,2,word2-2
6,3,word2-3


После этого выполните простейший поиск каждого слова, подсчитайте количество найденных слов и сравните с количеством слов набора. Те записи, где эти значения равны - вывести.
...
Рейтинг: 0 / 0
запрос поиск по строкам
    #39470676
tadeyiloda
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не очень понятно что нормализировать, ну и дальше тоже
"слово" это для примера, например в таблице 1 может быть "вася в машине", "Мама на кухне" любые выражения
и получается нужно пройтись по записям и выбирать все слова?
...
Рейтинг: 0 / 0
запрос поиск по строкам
    #39470686
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tadeyilodaполучается нужно пройтись по записям
Забудьте свои процедурные подходы. Не на бэйсике пишете.

Шаблон:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
SELECT t4.id2 phrase_id
FROM ( SELECT t1.id id1, t2.id id2, COUNT(t2.id) cnt
       FROM words t1, phrases t2
       WHERE INSTR(t2.text, t1.word)
       GROUP BY t1.id, t2.id ) t4,
     ( SELECT t3.id, COUNT(t3.id) cnt
       FROM words t3
       GROUP BY t3.id ) t5
WHERE t4.id1 = t5.id AND t4.cnt = t5.cnt


где words - нормализованная таблица токенов, phrase - таблица тестируемых наборов токенов.
...
Рейтинг: 0 / 0
запрос поиск по строкам
    #39470687
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PS. В первом подзапросе скорее всего нужно изменить текст так, чтобы исключить нахождение субтокенов.
...
Рейтинг: 0 / 0
запрос поиск по строкам
    #39470909
tadeyiloda
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
опять не понятно
как нормализовать первую таблицу?
...
Рейтинг: 0 / 0
запрос поиск по строкам
    #39470980
tadeyiloda
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
допустим в таблице 1 такие значения
id text1 мама на кухне2 книга на столе
значит нормализованная таблица будет такой
idanswer_id text11мама21на31кухне42книга52на62столе
...
Рейтинг: 0 / 0
запрос поиск по строкам
    #39470984
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Верно.
...
Рейтинг: 0 / 0
запрос поиск по строкам
    #39471075
tadeyiloda
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
спасибо, все работает
только запрос 20559395 пришлось допиливать
немного непривычное решение
если нужно было искать только по одной фразе то тут все просто делается через match against ('+каждое +нужное +слово')
...
Рейтинг: 0 / 0
запрос поиск по строкам
    #39471240
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tadeyilodaтолько запрос 20559395 пришлось допиливать
Это ожидаемо - был дан шаблон, к тому же построенный так, чтобы была видна логика его построения.

tadeyilodaнемного непривычное решение
Вы просто не перешли ещё от мышления программиста к мышлению SQL-щика. Если у первого - итерации по одной записи за шаг, то у второго - работа со всем массивом как единым целым.

tadeyilodaвсе работает
В варианте, показанном в шаблоне, есть один большой недостаток - одно слово может быть частью другого (как подстрока), и будут ложные срабатывания. Лечится, конечно, обычно - вводом фэйк-разделителей, но по ресурсам получается очень накладно.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / запрос поиск по строкам
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]