2016-01-28 3 views
0

Сейчас я работаю над начинающим SQL вещами, и я столкнулся с проблемой с практикой вопросом:Как проверить равенство в строках таблицы SQL?

Перечислите ПКР, имя (первый и последний) и зарплатой всех сотрудников, которые являются менеджеры.
Подсказка: для получения ответа используйте вложенный запрос.

Менеджер - это тот, кто имеет тот же SUPERSSN, что и их SSN. Выше вопрос, кажется, прямо вперед достаточно для меня, но когда я запускаю мой SQL код:

SELECT SSN, FName, LName, Salary 
FROM employee 
WHERE SSN = SuperSSN 

Он возвращает НОЛЬ строк, и я не знаю, почему. Любая помощь очень ценится! Благодарю.

EDIT !: Моя ошибка. SuperSSN был varChar, тогда как SSN был Int.

EDIT2: таблица выглядит следующим образом:

SSN BDate  Sex Address Salary FName Minit LName DNo SuperSSN 
123456789 | 1965-01-09 | M | "731 Fondren, Houston, TX" | 30000 | John B | Smith | 5 | 123456789 
+1

Можете ли вы предоставить данные таблицы образцов. Имеются ли SSN и SuperSSN в одной таблице? –

+1

Если вы решили проблему, отправьте свое решение в качестве ответа и отметьте его как принятое, иначе сообщите нам информацию, указанную выше, чтобы мы могли вам помочь. – GGG

+0

@GGG Я еще не понял, но я сделал сообщение примерное значение из таблицы –

ответ

1

Если вы предпочитаете держать SuperSSN столбец типа VARCHAR, вы можете попробовать это:

SELECT SSN, FName, LName, Salary 
    FROM employee 
WHERE SSN = (SELECT DISTINCT CAST(SuperSSN AS UNSIGNED) FROM employee WHERE SSN = SSN); 

Else, просто это будет сделать его:

SELECT SSN, FName, LName, Salary 
    FROM employee 
WHERE SSN = (SELECT DISTINCT SuperSSN FROM employee WHERE SSN = SSN); 
+1

Я получаю ошибку «Подзапрос возвращает более одной строки» :(спасибо за помощь, хотя –

+1

@JohnathanScott: Ive сделал небольшие изменения. Пожалуйста, проверьте сейчас. –

+0

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

1

Попробуйте следующее

SELECT SSN, FName, LName, Salary 
FROM employee 
WHERE SSN = (SELECT SuperSSN FROM employee WHERE SSN = SSN) 
+1

Ой, я опаздываю .... – GGG

+0

По-прежнему собираюсь подняться, потому что все отлично :) –

+0

Спасибо (также, по какому вопросу помечен как менеджер, принятый ответ, возможно, вернет не-менеджеров, поскольку он просто перечислит все SuperSSN и проверяет, есть ли SSN сотрудника) – GGG

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