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

时间:2012-04-18 15:57:14

标签: mysql sql sql-order-by

我想在管理员面板中的每个数据库网格中引入默认的国家/地区默认城市默认城镇 这些都不是下拉这些是db grid

我有三张桌子 国家/地区表 id(int),name(varchar),is_default enum('1','0')

城市表
id(int),country_id(int),name(varchar),is_default enum('1','0')

城镇表
id(int),countr_id(int),city_id(int),name(varchar),is_default enum('1','0')

我的管理员面板中有3个链接 国家清单
城市名单
城镇名单

国家/地区列表
  - 当我打开国家/地区列表时,它将带来列表但默认国家/地区将首先出现

国家/地区默认
USA yes(它的第一行是因为它的is_dfault = 1) 德国没有

那没问题 从国家/地区选择*,其中is_default ='1'

城市列表
当我打开那个清单时

  • 城市列表将带有自己的县名,但默认国家/地区将来自第一行
  • 默认城市将位于城市列表页面中的此默认国家/地区

    选择城市。*,country.name作为国家/地区 在country.id = city.id上离开加入国家 按country.is_default排序,city.is_default asc
    那是错的sql我知道 例如
    城市名称国家/地区默认
    新泽西美国是(这个城市排在第一线,因为它的is_default = 1)
    芝加哥美国没有
    koln德国否(德国城市以美国城市开始,因为国家默认= 1)

城镇列表

  • is_default值1镇将首先出现在第一行的自己的城镇 例如
    城镇名称城市名称国家/地区默认
    美国小镇newjersey美国1(这个小镇排在第一线,因为它的is_default = 1) 在美国城镇之后 德国town1 koln德国0(德国或其他国家城市以美国城镇开始)

我认为我的问题是订单(按is_default排序)或者我需要与其他选择不同的sql 我尝试了一些代码,但国家混合,其他城市和城镇列表 等待你的帮助。
感谢

1 个答案:

答案 0 :(得分:0)

我不知道我是否明白你的意思,我试着回答。

我认为混合国家或其他列是错误的连接条件。 你的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”是错误的。如果你想把这两个表组合在一起,你应该

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”,然后首先弹出默认行。

我希望这会对你有所帮助:)