2012-04-18 49 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