Akıllı arama için Tricky SQL

0 Cevap php

Ben özel alanları ve böyle tanımlayan bir PHP CMS sistemi yoluyla bir form kullanıyorum.

Özel alanlardan biri akıllı arama yapar bir giriş alanı sağlar. Bu ne demektir, yazmaya başladığınızda, bu önermek google oldukça benzer eşleşen kayıtları gösterir olmasıdır.

SmartSearch girdi alanı saklanan bir mysql arama dayanır, ve bu sadece çok karmaşık görünüyor çünkü, ile sorun yaşıyorum budur.

Varolan aramasından SQL yapıştırmak için gidiyoruz, ve sonra yapmam çalışıyorum açıklamak duyuyorum.

Aşağıdaki gibi farklı sql sorguları, birkaç sütuna vardır:

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

Ben sorun bu sorguları aslında nasıl çalıştığını anlayarak yaşıyorum. Özellikle displayfield ve secondaryfield çok gereksiz görünüyor.

benim ihtiyaçları yerine sadece ben misafir istiyorum müşteri ... güncel örnek SmartSearch alan nasıl çalıştığını çok farklı olduğunu sanmıyorum, ve yerine adresi, ben sadece ad, soyad veya pasaport numarasını maç istiyorum.

Ben bile bu durumda secondaryfield gerekiyor acaba?

In particular, the inner join in the FromClause confuses me, as I don´t think I need to do that as all the guest information is in one table...

Burada herhangi bir yardım çok teşekkür, takdir edilir.

0 Cevap