Я использую форму через систему PHP CMS, которая определяет настраиваемые поля и т. Д.Tricky SQL для интеллектуального поиска
Одно из настраиваемых полей позволяет ввести поле ввода, которое выполняет интеллектуальный поиск. Это означает, что когда вы начинаете вводить текст, он показывает записи, которые соответствуют, очень похожие на google.
Поле ввода smartsearch основывается на сохраненном поиске mysql, и с этим я столкнулся, потому что он выглядит слишком сложным.
Я собираюсь вставить SQl из существующего поиска, а затем объяснить, что я пытаюсь сделать.
Существуют различные запросы SQL в несколько столбцов, следующим образом:
fromclause
((`clients` INNER JOIN `addresstorecord`
ON `clients`.`uuid` = `addresstorecord`.`recordid`
AND `addresstorecord`.`tabledefid`='tbld:6d290174-8b73-e199-fe6c-bcf3d4b61083'
AND addresstorecord.primary='1')
INNER JOIN `addresses` ON `addresstorecord`.`addressid` = `addresses`.`uuid`)
displayfield:
IF(clients.company != '',
CONCAT(clients.company,
IF(clients.lastname != '' OR clients.firstname != '',
CONCAT(' (',
IF(clients.lastname != '', clients.lastname, '{blank}'),
', ',
IF(clients.firstname != '', clients.firstname, '{blank}'),
')'),
'')
),
IF(clients.lastname != '' OR clients.firstname != '',
CONCAT(IF(clients.lastname != '', clients.lastname, '{blank}'),
', ',
IF(clients.firstname != '', clients.firstname, '{blank}')),
''))
)
secondaryfield:
IF(addresses.city != '' OR addresses.state !='' OR addresses.postalcode != '',
CONCAT(IF(addresses.city != '', addresses.city, ''),
', ',
IF(addresses.state != '', addresses.state, ''),
' ',
IF(addresses.postalcode != '', addresses.postalcode, '')),
'unspecified location')
classfield
clients.type
searchfields
clients.company, clients.firstname, clients.lastname
filterclause
clients.inactive=0
У меня возникли проблемы с пониманием того, как эти запросы фактически работают. displayfield и вторичное поле, в частности, кажутся очень избыточными.
Я не думаю, что мои потребности настолько отличаются от того, как работает текущий пример поля smartsearch ... просто вместо клиентов я хочу гостей, а вместо адреса, я просто хочу, чтобы он соответствовал первому, фамилию или номер паспорта ,
Интересно, если мне понадобится вторичное поле в этом случае?
В частности, внутреннее соединение в fromclause меня смущает, так как я не думаю, что мне нужно сделать, что, как вся информация, гость находится в одной таблице ...
Любая помощь здесь очень ценится, Спасибо.
Вы могли бы предоставить весь запрос в виде блока, чтобы мы могли видеть, что на самом деле запрашивается из БД? – bpeterson76
как бы я это сделал? Я не думаю, что могу ... Я думаю, что поле smartsearch выполняет разные запросы в зависимости от того, что напечатано .... – Jacob