フィールドName、Email、およびCityを持つフォームがあります。Cityは、3 つの個別のテーブル (Cities、Regions、Countries) を呼び出すオートコンプリート フィールドです。
私がやりたいのは、City、Region、および Country がすべて定義済みの値になるように、これらを配列に分解することです。これは、オートコンプリート フィールドに対する現在のクエリです。
SELECT c.City, concat(r.Region, ', ', co.Country)
FROM Cities c, Regions r, Countries co
WHERE c.RegionID = r.RegionID and c.CountryID = co.CountryID and c.City like CONCAT( inCity, '%' )
ORDER BY City;
ご覧のとおり、入力された値 ( inCity ) は、Cities テーブルの City 列とのみ比較されます。
City、Region、および Country を定義する必要があるのは、それらの ID をEventsという別のテーブルに入力する必要があるためです。これは、CityID をEventsテーブルに挿入するクエリです。
INSERT INTO Events (Events.CityID)
VALUES ((SELECT CityID FROM Cities WHERE City = inCity LIMIT 1));
同じ名前の都市が複数ある場合があるため、これも機能しません。
以前は PHP でこれを行うことができましたが、現在は myDBR レポートを使用してこれを行っており、クエリしか使用できません。