我想在我的管理面板中的每个数据库网格中引入默认国家默认城市默认城镇
这些不是下拉这些是数据库网格
我有三个表
国家/地区表
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 枚举('1','0')
我的管理面板中有 3 个链接
国家列表
城市列表
城镇列表
国家列表
- 当我打开国家/地区列表时,它会显示列表,但默认国家/地区将排在第一位
国家默认值
美国是(它排在第一行,因为它的 is_dfault=1)
德国 否
没关系
Select * from country where is_default='1'
城市列表
当我打开那个列表时
- 城市列表将带有自己的县名,但默认国家/地区将出现在第一行
默认城市将在城市列表页面的默认国家中排在第一位
选择 city.*,country.name 作为国家
在 country.id=city.id 上离开加入国家
order by country.is_default,city.is_default asc
那是我知道的错误 SQL
例子
城市名国家默认
美国新泽西州 是的(这个城市排在第一行是因为它的 is_default=1)
美国芝加哥没有
koln 德国 否(德国城市在美国城市之后开始,因为国家/地区默认为 1)
城镇列表
- is_default value 1 town will be first with own city towns at first line
例子
town name city name country default
usa town newjersey USA 1(这个镇排在第一行,因为它的 is_default=1) 在美国城镇之后
germany town1 koln GERMANY 0(德国或其他国家城市在美国城镇之后开始)
我认为我的问题是顺序(按 is_default 排序)或者我需要与其他选择不同的 sql
我尝试了一些代码,但国家混合在一起,其他城市和城镇也列出了
等待您的帮助。
谢谢
最佳答案
我不知道我是否明白你的意思,我试着给出一个答案。
我认为混合国家或其他列的是错误的连接条件。 你的 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”,那么默认行将首先弹出。
希望对你有所帮助:)
关于mysql - SQL 默认国家、城市、城镇列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10213282/