2016-08-11 5 views
1

私はメインテーブルから値を持ついくつかのテーブルを作成しようとしています。 PHPではエキスパートですがMySQLではエキスパートです メインテーブルには、この列があります。MySQLの中で選択Select Distinctは2つ以上の値を返します

Table Places 
ISO 
Country 
Language 
Region2 (is the estate) 
Region4 (is ths city council) 
ID (id for locality) 
Locality 

国の入手は難しいことではありませんでした:

CREATE TABLE countries (id integer(11) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, 
iso varchar(2) NOT NULL, language varchar(2) NOT NULL, 
name varchar(50) NOT NULL) ENGINE=MyISAM DEFAULT CHARSET=utf8; 

INSERT INTO countries (iso , language, name) 
SELECT DISTINCT ISO AS iso, Language as language, Country AS name FROM Places WHERE 1; 

は、今私はアメリカ、協議会と都市を作成する必要があり、私はアメリカで2日間しようとしてきました(私はいくつかの異なるコードで試しました):

CREATE TABLE states (id integer(11) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, 
country_id integer(11) UNSIGNED NOT NULL, country_iso varchar(2) NOT NULL, 
name varchar(80) NOT NULL) ENGINE=MyISAM DEFAULT CHARSET=utf8; 

INSERT INTO states (country_id, country_iso, name) 
SELECT DISTINCT 
    (SELECT countries.id AS country_id from countries WHERE countries.iso = Places.ISO), 
    ISO as country_iso , 
    Region2 AS name FROM Places WHERE 1; 

しかし、このSelectはすべての国のIDを返します。 私は、countries.isoがPlacesのISOと一致する国のテーブルを取得する必要があります。

この表の後に、私は、Councilsを作成し、Placesから値を取得し、Select Disctinctで再度値を取得し、州のIDと州IDを取得しようとします。

誰もがこれを選択するための厳格な方法で私を得ることができますか?おかげさまで

答えて

1

あなたは

INSERT INTO states (country_id, country_iso, name) 
SELECT DISTINCT countries.countries.id , ISO, Places.Region2 
from countries 
inner join Placesc on countries.iso = Places.ISO 
参加する必要があるようです
関連する問題