【问题标题】:Getting Array with MySQL使用 MySQL 获取数组
【发布时间】:2013-08-09 06:15:42
【问题描述】:

我有一个包含 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 列进行比较。

我需要定义城市、地区和国家的原因是因为我需要在另一个名为 Events 的表中输入它们的 ID。这是我将 CityID 插入 Events 表的查询:

   INSERT INTO Events (Events.CityID)
   VALUES ((SELECT CityID FROM Cities WHERE City = inCity LIMIT 1));

这也不起作用,因为有时会有多个城市同名。

我以前可以用 PHP 做到这一点,但我目前正在使用 myDBR 报告来做到这一点,我只能使用查询。

【问题讨论】:

  • 你不能删除连接吗?像这样:SELECT c.City, r.Region, co.Country
  • @JoelLewiw - 我可以,但我有这样的,所以它们都显示为自动完成表单中的一行。即使我删除了 concat,我仍然不知道如何在我的 INSERT 查询中调用 Region & Country。

标签: mysql arrays autocomplete mydbr


【解决方案1】:

当您将 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;

【讨论】:

  • 谢谢,已修复。不过,我仍然对如何在我的 INSERT 查询中获取 Region & Country 感到困惑。
  • 如果这个答案修复了它,你能把它标记为接受吗?如果没有,您应该添加自己的答案,以供将来参考。
  • 抱歉,我的意思是我将查询更改为您提供的内容以使事情更清楚,但我仍然遇到同样的问题(在我的 INSERT 查询中无法调用 Region & Country)
猜你喜欢
  • 1970-01-01
  • 2011-08-09
  • 2011-11-16
  • 2011-03-31
  • 2012-07-27
  • 1970-01-01
  • 2015-09-26
  • 2021-03-15
  • 2013-05-12
相关资源
最近更新 更多