select *
from
t1,
t2
where
uf_compare_str(t1.field1,t2.field1) = 'Y' and
uf_compare_str(t1.field2,t2.field3) = 'Y'
.....
Проблема с поиском
есть две таблицы и нужно сравнить несколько полей на предмет совпадений, задача нетривиальная, но вот в чем проблема:
скажем есть поле model и в нем данные : 280XL, 280 XL, 280-XL, XL 280,
а в другой таблице для model: 280xL, так вот, если посмотреть, то в первой таблице записаны одни и теже данные только поразному, с пробелом, без, с тире, задом наперед, возможно ли произвести поиск, чтоб вернуть все результаты?
возможно.
Потрясающий ответ
Извеняюсь за нахальство, а каким образом это сделать?
Я бы сделал с помощью хр. процедур, написал бы user function которая сравнивает две строки. Потом в запросе использовал бы ее. Или если бы работал например с базой вроде акцесса, то вынес бы сравнения в клиентский код...
тогда может так попробовать:
select into #temp
from Table1
where (нужное поле) in (280XL, 280 XL, 280-XL, XL 280)
это MySQL+PHP, данные в примере лишь для объяснения задачи так что вариант macr_os не пройдет.
Еслиб нужно было бы сделать поиск по одному вводимому юзером полю, то я бы мог написать функцию анлизирующую ввод и создающую подходящий запрос, но проблема в том что есть две таблицы (в одной 30000 записей в другой меньше, но она постоянно растет) поиск идет по нескольким полям, т.е. 3 поля из одной должны совпадать с 3 соответствующими полями из другой. Можно брать построчно данные из одной таблицы анализировать данные и делать подходящий поиск в другой таблице, но я думаю вы понимаете, что такой вариант не приемлим, т.к. это займет вечность и превысит тайм аут для скрипта, следовательно, все должно работать только через sql.
Код:
Что именно и как нужно я не знаю, но думаю идея в целом понятна...
Еще как вариант можно попробовать стандартные функции нечеткого поиска типа soundex, difference, только не знаю есть ли такие в mysql.