首先选择三个表,然后选择第二个,最后连接所有三个表

时间:2014-03-29 13:33:23

标签: mysql

我有三个表:省_Table,City_table和Town_table我想选择它们:


我用这个

SELECT p.province_id,p.province_name,c.city_id,t.town_id,
       Group_concat(c.city_name) city_name, 
       Group_concat(t.town_name) town_ name
FROM province_tbl p
         left JOIN city_tbl c 
               ON c.province_id = p.province_id 
         left JOIN town_tbl t
               ON t.town_id = c.town_id 
GROUP BY p.province_name,c.city_name,t.town_name order by p.province_name asc

它的工作但输出是:

Province Name, City Name, Town Name

我想要以下输出:

Province Name   
Province Name, City Name    
Province Name, City Name, Town Name

请参阅此示例zoopla.co.uk 在搜索栏中输入London。 打开我需要的下拉结果。如下。

London 
London Blackfriars Station
London Blackfriars Station 2
London Blackfriars Station, Block 1
London Blackfriars Station, Block 2 
London Blackfriars Station, Block 3

请详细回答,因为我是MySql的新手。

1 个答案:

答案 0 :(得分:0)

尝试在WITH ROLLUP子句的末尾添加GROUP BY - 就像这样:

...

GROUP BY p.province_name,c.city_name,t.town_name WITH ROLLUP

SQLFiddle here

如果要更改默认排序顺序,则需要将整个查询视为子查询,并按外部查询中的相关列进行排序。