2016-08-11 51 views
1

我試圖用主表中的值創建一些表。專家在PHP中,但不在MySQL中。 主表中有此列:MySQL,選擇內部選擇獨特返回多個值

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; 

現在我要創建國家,議會和城市,我一直在與各國試圖兩天像這樣(我試過一些不同的代碼):

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; 

但是對於country_id這個選擇返回所有的國家ID。 我只需要在country.iso國家代碼中找到國家/地區id。

在這個表格之後,我必須創建委員會,從Places中獲取價值,再次選擇Disposect,並且再次嘗試從各個國家獲得州ID,也許還需要de國家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