2016-01-18 3 views
1

У меня есть две таблицы с именем «регионы» и «city_list»:MySQL таблицы JOIN с LIKE без добавления другого столбца ID

REGIONS TABLE: 
r_id  r_code  r_name 
1   REGION I  Ilocos Region 
2   REGION II  Cagayan Valley 
3   REGION III Central Luzon 
4   REGION IV-A CALABARZON 
5   REGION IV-B MIMAROPA 

CITY_LIST TABLE: 

city_id city_name  city_region 
32  Catbalogan  REGION VIII (Eastern Visayas) 
33  Cauayan   REGION II (Cagayan Valley) 
34  Cavite City  REGION IV-A (CALABARZON) 
35  Cebu City  REGION VII (Central Visayas) 
87  City of Naga  REGION VII (Central Visayas) 

Я хочу, чтобы ссылаться на таблицу регионов, когда пользователь выбирает город имя из city_list таблица. Например:

Пользователь выбирает «Cauauyan» из выпадающего списка, сервер возвращает код региона, который является «r_code» столбец из таблицы регионов.

Могу ли я использовать инструкцию JOIN с LIKE без добавления столбца для идентификатора региона в таблице city_list? Возможно ли получить значение в city_region как «REGION II» без «(долины Кагаян)» и использовать это значение для получения r_id в таблице REGIONS?

+0

Здесь вы уже храните регион в таблице city_list с именем city_region, тогда зачем требуется объединение? –

+2

Почему вы не используете «r_id» в городской таблице, потому что теперь ваша таблица «CITY_LIST» не нуждается в данных из регионов во время выбора. –

+0

Похоже, у вас есть название региона, а не список городов. Не реляционные, но в любом случае - вы можете присоединиться к таблице регионов и получить регион, я бы так. Не забудьте добавить индекс в поле city_region для производительности. – FunkSoulBrother

ответ

0
SELECT r.r_id 
FROM REGIONS r 
WHERE r.`r_code` IN(
SELECT LEFT(`CITY_LIST`.`city_region`,INSTR(`CITY_LIST`.`city_region`,"(")-1) AS Region_id FROM `CITY_LIST`); 
+0

@johnxbogart. Я проверил свой ответ, если он дает результат? – Luke