2016-02-20 3 views
0

не возвращаются Это работает, чтобы вернуть имя:SQLite ВЫБРАТЬ ничего

SELECT Fname, Lname FROM EMPLOYEE WHERE dno = 4 AND Ssn = 999887777; 

возвращает имя сотрудника.

Но это не возвращает ничего:

SELECT Fname, Lname FROM EMPLOYEE WHERE dno = 4 AND Ssn = (SELECT essn FROM WORKS_ON); 

Я хочу, чтобы получить имена всех служащих в отделе № 4 которого работник ПЛА находятся в таблице WORKS_ON.

«essn» и «Ssn» - это 9-символьные текстовые поля, которые работают в других контекстах.

+0

Что происходит, когда вы запустите этот запрос 'ВЫБРАТЬ ESSN ОТ WORKS_ON' –

ответ

3

Вы не можете использовать =, чтобы сравнить значение с подзапросом, который возвращает несколько значений.

Путь, чтобы выяснить, если Ssn в результате подзапроса является использование IN:

SELECT Fname, Lname 
FROM EMPLOYEE 
WHERE dno = 4 
    AND Ssn IN (SELECT essn FROM WORKS_ON); 
+1

D'Oh! Работает отлично. СПАСИБО – user3238181

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