mysql/core_cities_merge.sql
authorEdward <edward@roojs.com>
Fri, 27 Jun 2014 04:38:57 +0000 (12:38 +0800)
committerEdward <edward@roojs.com>
Fri, 27 Jun 2014 04:38:57 +0000 (12:38 +0800)
mysql/core_cities_merge.sql

index 15a9b96..fdef1b5 100644 (file)
@@ -499,27 +499,29 @@ CREATE FUNCTION core_city_blocks_mapping()  RETURNS INT DETERMINISTIC
             SET v_subdivision_name = '';
             SET v_city_name = '';
 
-            SELECT country_iso_code,subdivision_name,city_name INTO v_country_iso_code, v_subdivision_name, v_city_name FROM city_locations WHERE geoname_id = v_geoname_id;
-
-            IF v_country_iso_code != '' THEN
-                SELECT id INTO v_country_id FROM core_geoip_country WHERE code = v_country_iso_code;
-            END IF;
+            SELECT id INTO v_mapping_id FROM city_blocks_mapping WHERE geoname_id = v_geoname_id AND city_id = v_city_id;
+            
+            IF v_mapping_id = 0 THEN
+                SELECT country_iso_code,subdivision_name,city_name INTO v_country_iso_code, v_subdivision_name, v_city_name FROM city_locations WHERE geoname_id = v_geoname_id;
 
-            IF v_subdivision_name != '' THEN
-                SELECT id INTO v_divison_id FROM core_geoip_division WHERE name = v_subdivision_name AND country_id = v_country_id;
-            END IF;
+                IF v_country_iso_code != '' THEN
+                    SELECT id INTO v_country_id FROM core_geoip_country WHERE code = v_country_iso_code;
+                END IF;
 
-            SELECT id INTO v_city_id FROM core_geoip_city WHERE name = v_city_name AND country_id = v_country_id AND division_id = v_divison_id;
+                IF v_subdivision_name != '' THEN
+                    SELECT id INTO v_divison_id FROM core_geoip_division WHERE name = v_subdivision_name AND country_id = v_country_id;
+                END IF;
 
-            IF v_city_id != 0 THEN
-                SELECT id INTO v_mapping_id FROM city_blocks_mapping WHERE geoname_id = v_geoname_id AND city_id = v_city_id;
+                SELECT id INTO v_city_id FROM core_geoip_city WHERE name = v_city_name AND country_id = v_country_id AND division_id = v_divison_id;
 
-                IF v_mapping_id = 0 THEN
+                IF v_city_id != 0 THEN
                     INSERT INTO city_blocks_mapping (geoname_id, city_id) VALUES (v_geoname_id, v_city_id);
+                    
                 END IF;
-                
+
             END IF;
             
+            
             IF v_count = v_total THEN
               LEAVE read_loop;
             END IF;