1

管理パネルのすべてのdbグリッドにデフォルトの国のデフォルトの都市のデフォルトの町を表示したい
これらはドロップダウンではありませんこれらはdbグリッドです

3つのテーブルの
国テーブル 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つのリンクがあります
国リスト
都市リスト
町リスト

国リスト
-国リストを開くとリストが表示されますが、デフォルトの国が最初に表示されます

国のデフォルト
米国はい(is_dfault = 1であるため、最初の行に表示されます)
ドイツいいえ

それは大丈夫
ですis_default='1'の国から*を選択してください

都市リスト
そのリストを開くと

  • 都市リストには独自の郡名が付けられますが、デフォルトの国が最初の行に表示されます
  • デフォルトの都市は、都市リストページのこのデフォルトの国の最初になります

    city。*、country.nameを選択します。国として国
    を残します。country.id= city.idで国に参加します。country.is_default city.is_default で 注文
    します。 is_default = 1であるため、最初の行) chicago USA no koln Germany no(国がdefault = 1であるため、ドイツの都市はUSAの都市の後に始まります)






タウンリスト

  • is_default value 1町は、最初の行に独自の都市町が表示されます

    町名都市名国デフォルト
    米国町ニュージャージーUSA 1(この町はis_default = 1であるため、最初の行に表示されます)米国都市町
    ドイツtown1 koln GERMANY 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」が間違っていると思います。2 つのテーブルをその国 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 に答える