2 tablolardaki 2 sütun php mysql arama

2 Cevap php

I have two tables in one DB, one called Cottages and one called Hotels. In both tables they have the same named fields.

Ben temelde i tablolar hem alanların hem de aramak istediğiniz bir arama çubuğu var. (Iki alan "Adı" ve "Location" olarak adlandırılan

SO kadarıyla var

$sql = mysql_query("SELECT * FROM Cottages WHERE Name LIKE '%$term%' or Location LIKE '%$term%' LIMIT 0, 30");

Ama bu sadece nasıl bu evler ve otel tabloları hem arama yapabilir, evler tablosunu arar?

2 Cevap

Eğer sadece birinde hem tabloları birleştirmek ve her kaydı Identiy için (cottage veya hotel gibi değerleri ile) type gibi yeni bir alan eklemek olsaydı daha iyi olurdu.

İşte normalization denir ve o mesaj, kategoriler, ekleri ve sabe veritabanı tablo sayfalarını kaydederken WordPress yapmak tam olarak ne oluyor.

TiuTalk cevabı doğru - sütunlar her iki tabloda aynı iseniz, büyük ihtimalle sadece bu veriler için bir tablo kullanmak, ve bir türü sütun eklemek gerekir.

Buna ek olarak LIKE '%foo%' yavaş kullanılmıştır. Sen full text search içine bakmak gerekir. Ayrıca BENZERI ile aynı şekilde birden fazla tablo kolları artı alaka göre sıralayabilirsiniz. Alakaya göre sıralama ilk ne zaman olursa olsun, gelen hangi tablo en uygun satır olsun.

Eğer tasarımını değiştiremezsiniz ve size ayrı ayrı sorgulamak ve sonuçlarını birleştirmek için UNION ALL kullanabileceğiniz her tablodan tam yarısı sonuç almak istiyorsanız:

(SELECT * FROM Cottages WHERE Name LIKE '%$term%' or Location LIKE '%$term%' LIMIT 15)
UNION ALL
(SELECT * FROM Hotels WHERE Name LIKE '%$term%' or Location LIKE '%$term%' LIMIT 15)

Açıkçası sütunlar, bu çalışması için her iki tablonun aynı olmalıdır. SELECT * olsa kullanmayınız - açıkça aksi sütunları yeniden sıralama sütun adlarını listelemek gereken bu sorgu kırılmasına neden olabilir.