如何从两个表中获取数据?

时间:2014-01-08 23:40:30

标签: mysql sql

我有两张桌子 区域

| region_id | region_name|
|------------------------|
|  1        | zxc        |
|  2        | da         |
|  3        | asdas      | 

和城市

| region_id | city_name  | city_id |
|------------------------|---------|
|  1        | zxc        |    22   |
|  1        | da         |     3   |
|  1        | asdas      |    23   |
|  2        | zxc        |    22   |
|  2        | da         |     3   |
|  1        | asdas      |    23   |
|  3        | zxc        |    22   |
|  3        | da         |     3   |
|  3        | asdas      |    23   |

主要栏目是region_id ......其他人现在完全没有

查询是:

SELECT 
city.name AS city_name,
region.name AS region_name
FROM city 
LEFT JOIN region 
ON (city.region_id = region.region_id) 
ORDER BY region_name

所以...我得到了smth。像这样:

| region_name   | city_name  | city_id |
|---------------|------------|---------|
|  asd          | zxc        |    22   |
|  asd          | da         |     3   |
|  asd          | asdas      |    23   |
|  asd          | zxc        |    22   |
|  asd          | da         |     3   |
|  zxc          | asdas      |    23   |
|  zxc          | zxc        |    22   |
|  zxc          | da         |     3   |

现在......你看到很多“asd”和“zxc”......所以可以吗?因为我需要将region_name显示为块的标题,但是城市的名称必须在此块中,例如:

asd:asdas.zxc.da。等等......?

你可以帮我改进这个查询吗? 或者如果它没问题,我怎么才能只获取一次区域名称?

谢谢!祝你好运!

1 个答案:

答案 0 :(得分:1)

解决方案是按地区分组,然后您可以将城市名称连在一起:

SELECT GROUP_CONCAT(city.name,city.city_id),region.name AS region_name
FROM city 
LEFT JOIN region 
ON (city.region_id = region.region_id)
GROUP BY region.name;