1

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

我有三个表
国家表 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 是(由于 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) Chicago
    USA no
    koln Germany no (德国城市在美国城市之后开始,因为国家默认=1)

城镇列表

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

我认为我的问题在于订单(按 is_default 排序),或者我需要不同的 sql 和
其他
选择
谢谢

4

1 回答 1

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”是错误的。如果你想结合这两个表,在它的国家 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”,然后默认行首先弹出。

我希望这对你有帮助:)

于 2012-04-22T02:26:39.307 回答