我正在建立一个网站,里面会有很多公司和他们的商家名单,所以他们会有他们的地址,城市,州,邮政编码等。
我在这里找到了这个网站: http://jesseprice.com/mysql-city-state-zip-latitude-longitude-database/,其中包含所有城市,州,邮编,县,纬度,长度的数据库。
我上面导入了数据库,所以我的问题是我如何将它连接到我的公司表?当一家公司报名时,我想我可以为该州做一个下拉,然后它会下降到那个州的城市从数据库中拉出来,以便他们从那些中选择,然后是邮政编码。那会有用吗?所以他们不必自己输入它?
我对如何正确地做到这一点感到有些困惑,所有这一切都让它一起工作。
谢谢。
答案 0 :(得分:1)
选项1:
将所有字段添加到地址表中,在添加时引用所选表格,将city,state,zip,county,lat和long放入表格中。
<强>优点强>:
选项2:
仅添加一个zip字段,对于所有查找,从下载的表中提取数据。
<强>优点强>:
我实际上建议将字段添加到托管表中,并将下载的表保留为只读,可替换的引用表。
答案 1 :(得分:0)
您需要具有以下表格设计(公司/城市) -
CREATE TABLE `companies` (
`companyID` smallint(5) unsigned NOT NULL AUTO_INCREMENT,
`companyName` varchar(150) NOT NULL DEFAULT '',
`address` varchar(300) NOT NULL DEFAULT '',
`cityID` smallint(5) NOT NULL,
`countryID` varchar(3) NOT NULL,
PRIMARY KEY (`companyID`),
KEY `cityID` (`cityID`),
KEY `countryID` (`countryID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `countries` (
`countryID` varchar(3) NOT NULL DEFAULT '',
`countryName` varchar(52) NOT NULL DEFAULT '',
`localName` varchar(45) NOT NULL,
`webCode` varchar(2) NOT NULL,
`region` varchar(26) NOT NULL,
`continent` enum('Asia','Europe','North America','Africa',
'Oceania','Antarctica','South America') NOT NULL,
PRIMARY KEY (`countryID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `cities` (
`cityID` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
`cityName` varchar(50) NOT NULL,
`stateID` smallint(5) unsigned NOT NULL DEFAULT '0',
`countryID` varchar(3) NOT NULL DEFAULT '',
PRIMARY KEY (`cityID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
您可以从此处下载mysql格式的世界城市/国家/地区的完整列表 -
http://myip.ms/info/cities_sql_database/World_Cities_SQL_Mysql_Database.html