0

フィールドNameEmail、および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 レポートを使用してこれを行っており、クエリしか使用できません。

4

1 に答える 1

0

条項JOINから条件を除外すると、物事はより明確になります。WHERE

SELECT concat(c.City, ', ', r.Region, ', ', co.Country)
FROM Cities c
    INNER JOIN Regions r ON c.RegionID = r.RegioID
    INNER JOIN Countries co ON c.CountryID = co.CountryID
WHERE c.City like CONCAT( inCity, '%' )
ORDER BY City;
于 2013-08-07T18:20:27.690 に答える