1

ここからこの csv ファイルをダウンロードしました。次の内容が含まれています。

データベース列:

ZIP
LATITUDE
LONGITUDE
CITY
STATE
COUNTY
ZIP_CLASS

これを SQL Server にインポートすると、同じ列を持つテーブルができました。そのテーブルから、次のようなテーブルを作成しましたstatescounty

:

insert into states(name)
select distinct [state] from newlist order by state asc

:

insert into counties(name, stateid)
select distinct n.[county], s.id as stateid
from newlist n
inner join states s on n.[state] = s.name
order by county asc

今、テーブルを作成し、郡 ID との関係を持ちたい場合cities、多くの重複に道を譲り続けます

Cities:

select distinct n.[city], c.id as countyid
from newlist n
inner join counties c on n.[county] = c.name
order by city asc

元のテーブルには約 30,000 のレコードがあり、実行すると 140,000 を超えるレコードが得られます。私が見ているのは、郡が異なる州にあることと関係がありますか? 必要に応じて、テーブル構造とデータを含む SQL スクリプトを添付できます。これにより、これを簡単に行うことができます。本当に立ち往生していて、それを解決する方法がわかりません。

4

1 に答える 1

1

「オレンジカウンティ」がある州は 10 ほどあります。郡テーブルの州は、ソース データから来ていますか、それとも名前で推測していますか?

これを試して:

INSERT INTO Counties(name, stateid)
  SELECT DISTINCT LIST.name LIST.stateid
  FROM NewList  LIST

その後

 INSERT INTO Cities(city, countyid)
  SELECT DISTINCT LIST.city, COUNTY.countyid
    FROM NewList LIST
         INNER JOIN Counties COUNTY
            ON COUNTY.state = LIST.stateid
            AND COUNTY.name = LIST.county

これは、stateid が 2 文字の州コードであることを前提としています。

于 2013-07-08T18:01:44.260 に答える