Sql 默认国家、城市、城镇列表
Posted
技术标签:
【中文标题】Sql 默认国家、城市、城镇列表【英文标题】:Sql Default Country, City, Town lists 【发布时间】:2012-04-18 15:57:13 【问题描述】:我想在我的管理面板中的每个数据库网格中引入默认国家默认城市默认城镇 这些不是下拉这些是数据库网格
我有三张表国家表 id(int),name(varchar),is_default 枚举('1','0')
城市表 id(int),country_id(int),name(varchar),is_default 枚举('1','0')
城镇表 id(int),countr_id(int),city_id(int),name(varchar),is_default enum('1','0')
我的管理面板中有 3 个链接 国家名单 城市列表 城镇列表
国家/地区列表 - 当我打开国家/地区列表时,它会显示列表,但默认国家/地区会排在第一位
国家/地区默认设置 美国是的(因为它的 is_dfault=1,所以它排在第一行) 德国没有
没关系 从 is_default='1' 的国家/地区选择 *
城市列表 当我打开那个列表时
城市列表将带有自己的县名,但默认国家/地区将出现在第一行默认城市将在城市列表页面的默认国家中排在第一位
选择 city.*,country.name 作为国家 在 country.id=city.id 上离开加入国家 按 country.is_default,city.is_default asc 排序 我知道那是错误的 sql 示例城市名称国家/地区默认 新泽西州 美国 是(这个城市排在第一线,因为它的 is_default=1) 芝加哥美国没有 koln Germany no(德国城市在美国城市之后开始,因为默认国家/地区=1)
城镇列表
is_default value 1 城镇将首先出现,第一行是自己的城镇 示例城镇名称城市名称国家/地区默认 usa town newjersey USA 1(这个城镇排在第一行,因为它的 is_default=1) 在美国城镇之后 德国 town1 koln GERMANY 0(德国或其他国家城市在美国城镇之后开始)我认为我的问题在于订单(按 is_default 排序)或者我需要不同的 sql 和其他选择 我尝试了一些代码,但国家/地区混合在一起,其他城市和城镇列表也 等待您的帮助。 谢谢
【问题讨论】:
您的城镇表中有城市 ID?这意味着城镇是城市的一部分? 【参考方案1】:我不知道我是否明白你的意思,我试着给出答案。
我认为混合国家或其他列的加入条件是错误的。 你的sql在这里:
Select city.*,country.name as country
left join country on country.id=city.id
order by country.is_default,city.is_default asc
以上是您发布的内容,因为它不完整,我猜您的加入条件“on country.id=city.id”是错误的。如果你想组合这两个表,在它的 contry id 上,你应该
SELECT city.*, county.name AS country_name from
country LEFT JOIN city ON country.id = city.country_id
ORDER BY country.is_default, city.is_default DESC
因为“is_default”为 1,我使用“DESC”,然后默认行首先弹出。
希望对你有帮助:)
【讨论】:
@conf:你能发布更多线索吗?或者你可以分句调试sql,一一测试。我认为这是调试复杂sql语句的好方法。 @confi:突然间,我有了一些想法。你的意思是你的 contry 和/或 city 没有出现连续(例如它应该是“china shanghai;china beijing”,但现在是“china shanghai;usa la ;中国北京”)。如果是这样,您应该将 city.country_id 和 city.id 添加到您的 order by 子句中,那么您的结果将更加有序。希望对你有帮助:)。以上是关于Sql 默认国家、城市、城镇列表的主要内容,如果未能解决你的问题,请参考以下文章