職場の検索画面の mysql クエリに問題があります。以下に投稿するコードを使用してクエリを実行しましたが、もっと良い方法があるのではないかと思います。Mysql は本当にかなり初心者です。私は進むにつれて理解するか、しようとします。
データベースの概念は次のとおりです。私のクエリには、エンティティ、住所、連絡先、クライアント、グループ、および施設のテーブルが含まれています。
各クライアント、グループ、および施設は、より適切な言葉がないため、「エンティティ」です。各エンティティには、エンティティ テーブルに独自のエンティティ ID があります。
エンティティ テーブルには、住所レコード 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";
助けてくれてありがとう!