提问者:小点点

Sql默认国家、城市、城镇列表


我想把默认国家默认城市默认城镇在每个数据库网格在我的管理面板
这些不是下拉这些是数据库网格

我有三个表
国家表id(int),名称(varchar),is_default枚举('1','0')

城市表id(int)、国家/地区id(int)、名称(varchar)是默认的枚举('1','0')

城镇表id(int)、countr_id(int)、city_id(int)、name(varchar)是默认的枚举('1','0')

我的管理面板中有3个链接
国家列表
城市列表
城镇列表

国家列表
-当我打开国家列表时,它会带来列表,但默认国家将排在第一位

国家/地区默认值
美国是(由于其为\u dfault=1,所以排在第一行)
德国否

这是确定的
选择*从国家is_default='1'

城市列表
当我打开该列表时

>

选择城市。*,country.name国家
左加入国家country.id=city.id
country.is_default,city.is_defaultasc
这是错误的sql我知道
示例
城市名国家默认
新泽西美国是(这个城市排在第一行,因为它的is_default=1)
芝加哥美国否
科伦德国否(德国城市在美国城市之后开始,因为国家默认=1)

城镇列表

  • is_default值1城镇将首先与自己的城镇排在第一行
    示例
    城镇名称城市名称国家默认
    美国城镇新泽西美国1(这个城镇排在第一行,因为它的is_default=1)在美国城镇之后
    德国城市1 koln德国0(德国或其他国家城市在美国城镇之后开始)

我想我的问题在于顺序(默认情况下是order by),或者我需要不同的sql和其他选择
我尝试了一些代码,但国家混合,其他城市和城镇列表也在等待您的帮助<谢谢


共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

以上是你发布的内容,因为它不完整,我猜你的加入条件“oncountry.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”,然后默认行将首先弹出。

我希望这将对您有所帮助:)