İki php değişkenlerine karşı çoklu tablo Tam metin arama

1 Cevap php

Ben business_id ortak konu olan bilgi üç tablo var. Ben iki giriş alanları, genel arama için birini (kullanıcılar isterlerse için arayabilirsiniz) ve bir zip girişi var. Php tarafta, ben genel arama dizesini yakalamak ve $search ve $zip için zip setine ayarlayın.

Nasıl MATCH tam metin indecies herhangi then limit those matches using the $zip then $search değişkeni kullanabilirsiniz > tablo c sadece id dönmek?

Benim veritabanı yapısı aşağıdaki gibidir:

table coup
    id  << this is the my desired information from the search
    timestamp
    business_id
    coupvalue
    startdate
    enddate
    username
    status
    terms
    image
    description
    	primary = id
    	fulltext = name
table bloc
    id
    address
    city
    state
    zip
    business_id
    phone
    lat
    lon
    	primary = id
table bus
    business_id
    name
    timestamp
    category
    subcat
    	primary = business_id
    	fulltext = name,category,subcat

Herhangi bir yardım mutluluk duyacağız!

1 Cevap

Sen maçlarla bir or koşulunu kullanabilirsiniz:

select
    c.id
from
    coup c
    inner join bus b on
        c.business_id = b.business_id
    inner join block z on
        c.buisness_id = z.business_id
    where
        (match(c.name) against ('$search')
        or match (b.name, b.category, b.subcat) against ('$search'))
        and z.zip = '$zip'

Ben benchmarked değil, ama bu potansiyel daha hızlı olabilir:

select
   c.id
from
    (select id, business_id 
     from coup 
     where match(name) against ('$search')
    ) as c
    left join
       (select business_id 
        from bus 
        where match(name, category, subcat) against ('$search')
       ) as b on
        c.business_id = b.business_id 
    inner join bloc z on
        c.business_id = z.business_id
where
    z.zip = '$zip'