gpt4 book ai didi

php - MySQL查询以选择给定任何地区下的城市

转载 作者:可可西里 更新时间:2023-11-01 07:08:01 25 4
gpt4 key购买 nike

我有一个包含所有区域(包括城市)的数据库,它们以树状结构排列,使用每个 id 作为父区域 id。

mysql 列是 id , parent_region_id , region_name

结构就像...

SELECT region_id、region_type、region_name、parent_region_id、parent_region_name FROM regions_data WHERE parent_region_id = 201

enter image description here

区域类型是....

Country -> Province(州)-> Multi-Region(一个国家内)-> Multi-City(Vicinity)-> City

只有一些国家有 Province (State),其他国家有 Multi-Region (within a country).. 这些国家可能有也可能没有 Multi-City (Vicinity) 级别在它下面。

美国 -> 加利福尼亚 -> 加利福尼亚中部 -> 圣华金河谷 -> Mojave 及附近地区 -> 加利福尼亚市

像上面一样,美国下会有很多地区,所有这些地区可能有很多子区域和这些子区域下的城市。

我想要一个完美的 MySQL 查询,它将返回给定区域内的所有城市。

给我美国下的所有城市给我阿拉斯加州下的所有城市

这里有 MySQL 专家可以帮助我吗?

最佳答案

您可以使用多个 JOIN 来遍历子级别,然后只打印那些具有您要查找的正确 region_type 的。假设您最多有 6 个级别(如果需要,您可以很容易地添加更多...):

SELECT 
IF(`t1`.`region_type`='City', `t1`.`region_name`,
IF(`t2`.`region_type`='City', `t2`.`region_name`,
IF(`t3`.`region_type`='City', `t3`.`region_name`,
IF(`t4`.`region_type`='City', `t4`.`region_name`,
IF(`t5`.`region_type`='City', `t5`.`region_name`, '')
)
)
)
)
FROM `regions_data`

LEFT JOIN `regions_data` `t1` ON (`t1`.`parent_region_id` = `regions_data`.`id`)
LEFT JOIN `regions_data` `t2` ON (`t2`.`parent_region_id` = `t1`.`id`)
LEFT JOIN `regions_data` `t3` ON (`t3`.`parent_region_id` = `t2`.`id`)
LEFT JOIN `regions_data` `t4` ON (`t4`.`parent_region_id` = `t3`.`id`)
LEFT JOIN `regions_data` `t5` ON (`t5`.`parent_region_id` = `t4`.`id`)

WHERE `regions_data`.`region_name` = 'ALASKA STATE'

关于php - MySQL查询以选择给定任何地区下的城市,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32485468/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com