0

我有一个包含NameEmailCity字段的表单。城市是一个自动完成字段,它调用 3 个单独的表(城市、地区、国家)。

城市领域

我想做的是将这些分解成一个数组,以便 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 的原因是因为我需要在另一个名为Events的表中输入它们的 ID 。这是我将 CityID 插入到我的事件表中的查询:

   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 回答