çok kriterli arama

3 Cevap php

Ben Müşteri verileri (ex Müşteri Adı, Müşteri İletişim Adı, Müşteri Hizmetleri Ürün vb) ile birden fazla tablo var.

Ben tablolar arasında bu çoklu sütunlarda arama etkiçindeleştirmeniz gerekir. Sonra ben (Müşteri Kimliği, veya Müşteri Adı ihtiyacımız) Müşteri bilgileriçindei çekmek içiçinde arama sonucu kullanmak zveyaunda.

Bunu yapmanın en iyi yolu nedir?

Olası Çözümleri:

  1. Birden fazla filtre (farklı arama kutuları) Teklif, ve sonra ayrı ayrı her sonucunu işlemek. (Istemci bu tercih, ve tek bir kutu içiçindede bunu istiyveya değil.)
  2. Geçici bir tablo (MüşteriNo, Arama Alanı Değerler) oluşturun.
  3. Diziçinde oluşturabilirsiçindeiz!?
  4. Kullanıcı iç birleşim ve arama sonucu ele mantık içiçindee koymak!!

Teşekkürler.

3 Cevap

gibi bir şey deneyin:

SELECT
   c.*
    FROM CustomerTable c
        INNER JOIN (SELECT
                        CustomerID
                        FROM Table1
                        WHERE columnA =filter1
                    UNION
                    SELECT
                        CustomerID
                        FROM Table2
                        WHERE columnB =filter2
                    UNION
                    SELECT
                        CustomerID
                        FROM Table3
                        WHERE columnC =filter3
                   ) dt ON c.CustomerID=dt.CustomerID

http://dev.mysql.com/doc/refman/5.1/en/fulltext-search.html

Ben daha zeki aramalar, "google-likish" izin Oracle uygulamalarında kullanılan Oracle Metin Arama vb bu benzer inanıyorum.

Bu yüzden oluşturulacak olan bir tam metin endeksidir.

Iç ile yapıyor might çalışır ancak kod karmaşık olacak ve performansı öldürebilir (ya da daha kötüsü, geçici tablolar etrafında kopyalama şeyler) katıldı.

o Müşteri bu gibi çalışır bir arama yapmaya ısrar etmesi durumunda yapabileceğiniz tek şey bir TEXT sütunu, FULLTEXT endeksi bu oluşturmak ve bu sütuna aramak istediğiniz tüm sütunları birleştirmek için. Bunu yaparsanız, ben sizi mantıklı orderthat bir çeşit sürdürülebilmesi ise doğru eşleşmeleri sağlanması için bu forma sorguları yazmak öneririz:

select *
  from sometable
 where match(search_column) against('$search_terms' in boolean mode)
order
    by match(search_column) against('$search_terms')