2014-01-08 39 views
-1

我有兩個表 地區如何從兩個表中獲取數據?

| 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 ......別人EXACTLY現在沒什麼

查詢是:

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 

所以...我得到了水手。像這樣:

| 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。等等...?

你能幫我改進這個查詢嗎? 或者如果可以的話,我怎樣才能取得區域名稱一次?

謝謝!祝你好運!

+0

請告訴我這個問題? – Shawn

+0

@Shawn我只需要取一次區域的名稱,但是如果我編寫echo $ region ['region_name'],它將會像有城市那樣寫很多次,也許我可以改進查詢? –

+0

查詢很好。它顯示了一個城市所在的每個地區。一種可能使它變少的方式就像是region_name上的一個group_concat。 – Shawn

回答

1

的解決方案是由區域組,那麼你就可以一起Concat的城市名稱:

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; 
相關問題