Я использую форму через систему PHP CMS, которая определяет настраиваемые поля и тому подобное.
В одном из настраиваемых полей предусмотрено поле ввода, которое выполняет интеллектуальный поиск. Это означает, что когда вы начинаете печатать, на нем отображаются записи, которые очень похожи на предложения 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
У меня проблемы с пониманием того, как на самом деле работают эти запросы. Поле дисплея и вторичное поле, в частности, кажутся очень избыточными.
Я не думаю, что мои потребности настолько отличаются от того, как работает текущий пример поля smartsearch ... просто вместо клиентов мне нужны гости, а вместо адреса я просто хочу, чтобы они соответствовали имени, фамилии или номеру паспорта.
Интересно, мне вообще нужно вторичное поле в этом случае?
В частности, внутреннее соединение в предложении from вводит меня в заблуждение, так как я не думаю, что мне нужно это делать, поскольку вся информация о гостях находится в одной таблице ...
Любая помощь здесь очень ценится, спасибо.