我对工作中的搜索屏幕的 mysql 查询有疑问。我已经使用我将在下面发布的代码进行查询,但我怀疑是否有更好的方法来做到这一点。Mysql 真的是个新手,我只是在进行过程中弄清楚,或者尝试一下。
这是数据库的概念:我的查询中涉及到一个实体、地址、联系人、客户、组和设施表。
由于没有更好的词,每个客户、组和设施都是一个“实体”。每个实体在实体表中都有自己的实体 ID。
Entity 表包含一个地址记录 ID 和一个联系人记录 ID。
在设施搜索屏幕上,如果用户搜索电话号码,我想搜索客户和组记录以及设施记录。然后像往常一样返回任何匹配的设施信息。
这是我到目前为止所得到的(我还没有为设施记录之外的地址做任何事情,为了解释自己,我已经硬编码了一些东西):
SELECT facility.FacilityID, facility.Name, contact.PhoneNumber, addy.State addy.ZipCode, facility.ProductionFacilityID,
facility.ProductionEntityID
FROM Facility facility
INNER JOIN ClientGroup cg ON facility.GroupID = cg.GroupID
INNER JOIN Client c ON cg.ClientID = c.ClientID
INNER JOIN Entity e ON facility.FacilityID = e.EntityID
INNER JOIN Entity eg ON cg.GroupID = eg.EntityID
INNER JOIN Entity ec ON c.ClientID = ec.EntityID
INNER JOIN Contact contact ON e.BillingContactID = contact.ContactID
INNER JOIN Contact contactg ON eg.BillingContactID = contactg.ContactID
INNER JOIN Contact cc ON ec.BillingContactID = cc.ContactID
INNER JOIN Address addy ON addy.AddressID = e.PhysicalAddressID
WHERE (facility.FacilityID like '%$searchfor%'
OR contactg.PhoneNumber like '%$searchfor%'
OR cc.PhoneNumber like '%$searchfor%')
AND facility.IsRowActive=1
ORDER BY $searchtype";
在此先感谢您的帮助!