2016-11-07 2 views
0

У меня есть таблица с именем users, который имеет столбец codecountry и другая таблица называется country, которая имеет столбцы code и country.имен Выбор стран на основе кодов стран

Я хочу выбрать country из таблицы country на основе codecountry из таблицы users.

Я думал, что код ниже будет работать, но он всегда возвращает пустой набор, и я не могу понять, что я делаю неправильно.

Код:

SELECT country 
FROM country 
WHERE (code) IN (
    SELECT codecountry 
    FROM users 
    WHERE iduser="me" 
) 
+2

Проблема, вероятно, заключается в 'iduser =" me ". Если ничего не найдено, вы ничего не получите. –

+2

'' me '' должно быть '' me''. Двойные кавычки предназначены для имен псевдонимов; одинарные кавычки для строковых литералов. Тогда отсутствует закрывающая скобка. –

+1

Теперь посмотрите, пожалуйста, о JOINs – Strawberry

ответ

0
SELECT c.country 
    FROM country c 
    JOIN users u 
    ON u.codecountry = c.code 
WHERE u.iduser = "me"; 
+0

Если вы хотите присоединиться к пользователю «я», то почему это условие не является частью критерия соединения (т.е. 'ON')? BTW: использование нестандартных разделителей строк не следует поощрять. –

+0

@ThorstenKettner Yep. Это тоже хорошо - даже лучше.Заполните ботинки. – Strawberry

+0

@ThorstenKettner: Но переместите 'u.codecountry = c.code' в предложение' WHERE', и вам ответят :) – onedaywhen

2

Я считаю, что проблемы как с "me", строки должны быть обернуты в одинарные кавычки, а также, попробуйте использовать кавычку для зарезервированных слов (который обычно выдает ошибку):

SELECT country 
FROM country 
WHERE`code IN (SELECT codecountry 
       FROM `users` 
       WHERE iduser='me') 

Либо это, либо как @GordonLinoff в комментариях, возможно, никакая запись не соответствует этому условию в таблице users.

+0

На самом деле это не ответ. Вы говорите, например, что запрос OP терпит неудачу, потому что они используют '(code)', а не '' code''? (Извините, я не знаю, как разместить обратные записи в комментарии, но вы знаете, что я имею в виду.) –

+0

Извините, у меня было что делать, поэтому я не добавлял никаких объяснений. На самом деле я просто добавил его, поскольку это зарезервированное слово, но я думаю, что проблема связана с двойными кавычками. @ThorstenKettner – sagi

+0

А, это выглядит лучше :-) Я даже не знал, что «код» является зарезервированным словом в MySQL. –