2012-04-18 59 views
1

我希望把默认的国家默认城市默认镇每分贝网格在我的管理面板
这些都降不下来,这些都是分贝网的Sql缺省国家,市,镇列出

我有三个表
国表 ID(INT),名(VARCHAR),is_default枚举( '1', '0')

城市表
ID(INT),COUNTRY_ID(INT),名(VARCHAR ),is_def奥尔特枚举( '1', '0')

城镇表
ID(INT),countr_id(INT),city_id(INT),名称(VARCHAR),is_default枚举( '1',” 0' )

我有3个环节在我的管理面板
国家名单
城市列表
镇名单

国家名单
- 当我打开国家列表会带来列表中,但默认的国家将是第一位的

国家默认
美国是(其在第一线来,因为它的is_dfault = 1)
德国无

多数民众赞成确定
SELECT * FROM国家,is_default = '1'

城市列表
当我打开列表

  • 城市列表将带着自己的县名,但默认情况下国家会在第一线
  • 和默认本市将率先在这个默认的国家在城市列表页

    选择城市。*,country.name作为国家
    左加入国家对country.id = city.id
    奥德r由country.is_default,city。is_default ASC
    这就是错误的SQL我知道
    例如
    城市名国家默认
    美国新泽西州是(这个城市在第一线来,因为它的is_default = 1)
    美国芝加哥没有
    科隆德国没有(德国城市美国城市之后开始,因为国家是默认值= 1)

镇名单

  • is_default值1个镇将在第一行
    例子来先是用自己的城市城镇
    镇名城市名国默认
    美国小镇新泽西州美国1(这个城市在第一线,因为未来其is_default = 1) 美国城市城镇
    德国科隆town1德国0(德国或其他国家的城市后,美国城镇后开始)

我认为我的问题是与秩序(order by is_default)或我需要diffirent sql与其他选择
我尝试了一些代码,但国家混合和其他城市和城市名单
等待你的帮助。
谢谢

+0

你的城镇表有一个城市id?这意味着一个城市是城市的一部分? – Ben 2012-04-22 12:05:46

回答

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 

以上是您发布的内容,因为它是不完整的,我猜“上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,我用“降序”,则默认行whill首先弹出。

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

+0

谢谢,但我仍然有同样的问题 – confi 2012-04-23 23:52:37

+0

@conf:你可以发布一些更多的线索吗?或者你可以通过拆分句子来调试sql,逐个测试它们。我认为这是一个很好的方式来调试复杂的sql语句。 – wedgwood 2012-04-24 01:43:28

+0

@confi:突然间,我有一些想法。你的意思是你的**和**城市没有出现连续性(例如它应该是“中国上海;中国北京”,但现在是“中国上海;美国北京”)。如果是这样,你应该将city.country_id和city.id添加到你的order by子句中,那么你的结果将会更有序。愿那帮助你:)。 – wedgwood 2012-04-24 01:48:50