2016-01-23 3 views
0

Этот запрос работает отлично:MySQL подзапрос с пунктом В

SELECT country_name FROM countries WHERE country_id IN (23,86,79) 

таким образом я могу получить список названия стран на основе этих COUNTRY_ID. Но то, что я хочу, чтобы получить их с помощью подзапроса, как:

SELECT country_name FROM countries WHERE country_id IN (SELECT office_id FROM countries WHERE country_code='FRA') 

я могу получить первое имя Id офиса и не все (в данном случае должно быть 4). Office_id и country_id - Int. Любая помощь?

+1

Почему вы не использовать это ?? - SELECT country_name FROM countries WHERE country_code = 'FRA' –

+0

запрос выглядит отлично. покажите нам некоторые данные и ожидаемые результаты, чтобы мы могли видеть, что пошло не так. –

ответ

2

Зачем вам нужен запрос на неправильный/длинный поворот. Ваш запрос отправил (ниже) с подзапроса

SELECT country_name 
FROM countries 
WHERE country_id IN (SELECT office_id 
         FROM countries 
         WHERE country_code='FRA') 

Может быть simpliy

SELECT country_name 
FROM countries 
WHERE country_code='FRA'; 
+0

Подзапрос возвращает несколько id (es: 12,22,43,9). С этим идентификатором мне нужно получить соответствующее название страны. Проблема, если это, если я написал что-то вроде «... IN (12,22,43,9)», весь запрос работает нормально, и я получаю четыре строки, но с помощью Select в качестве подзапроса я получаю только одно значение – Ras

+0

Вам не нужен подзапрос на первом месте. просто используйте запрос в ответ с требуемым, когда условие ... должно работать нормально. если нет, то выберите 'count count (*) из стран где country_code = 'fra'' и посмотрите, что такое счет ... что скажет вам, что случилось. – Rahul

+0

Извините, ребята, я был не очень ясен. внутренний запрос: «SELECT office_id FROM countries WHERE country_code = 'FRA'", возвращает строку с запятыми (es: "12,22,223"), и я бы использовал это с предложением IN – Ras

Смежные вопросы