Предположим, есть две таблицы, созданные:
CREATE TABLE emp
(
EMPNO int,
EMPNAME varchar(255),
JOB varchar(255),
DEPTNO int
);
CREATE TABLE dept
(
LOC varchar(255),
DEPTNO int
);
Я хочу узнать, в каком отделе нет работы. Я использую такое левое соединение:
select dept.*
from dept
left join emp
on (dept.deptno=emp.deptno)
where emp.empno is null;
Но если я использую псевдоним для dept или emp, я могу использовать только псевдоним и не могу использовать исходное имя таблицы. Например:
select dept.*
from dept as d
left join emp
on (dept.deptno=emp.deptno)
where emp.empno is null;
Я получаю сообщение об ошибке «нет такой таблицы: отдел» от sqlite.
Если я выполняю операции с одной таблицей, я могу использовать псевдоним и исходное имя таблицы в одном запросе.
Кто-нибудь знает почему?