2013-08-07 35 views
0

我有一个表格名称电子邮件城市城市是一个自动填充字段,可调用3个单独的表(城市,地区,国家)。使用MySQL获取数组

city field

我想什么做的是让这些爆炸成阵列,使得城市,地区和国家都定义值。这是我的查询,现在的自动完成场:

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)只相比,在城市表中的City列。

我需要定义城市,地区和国家的原因是因为我需要在另一个名为的活动中输入他们的ID。这是我的查询插入CityID到我活动表:

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

这也不起作用,因为有时会出现具有相同名称的多个城市。

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

+0

你就不能删除CONCAT?像这样:SELECT c.City,r.Region,co.Country –

+0

@JoelLewiw - 我可以,但我有这样的,所以他们都显示为自动完成表单中的一行。即使我删除了concat,我仍然不知道如何在INSERT查询中调用Region&Country。 –

回答

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; 
+0

谢谢,修复它。我仍然对如何在我的INSERT查询中获得区域和国家感到困惑。 –

+0

如果此答案解决了问题,请您将其标记为已接受吗?如果没有,你应该添加你自己的答案,以供将来参考。 – Dancrumb

+0

对不起,我的意思是我改变了我的查询,你提供了更清晰的东西,但我仍然有同样的问题(无法在我的INSERT查询中调用Region&Country) –