Si supponga ci sono due tabelle creato da:Perché non posso usare l'alias di una tabella e il suo nome originale nella stessa query quando si uniscono due tabelle?
CREATE TABLE emp
(
EMPNO int,
EMPNAME varchar(255),
JOB varchar(255),
DEPTNO int
);
CREATE TABLE dept
(
LOC varchar(255),
DEPTNO int
);
voglio scoprire che cosa reparto non ha impiego. Io uso un sinistro unirsi come questo:
select dept.*
from dept
left join emp
on (dept.deptno=emp.deptno)
where emp.empno is null;
Ma se io uso un alias per reparto o emp, quindi posso solo usare alias e non posso usare il nome della tabella originale. Ad esempio:
select dept.*
from dept as d
left join emp
on (dept.deptno=emp.deptno)
where emp.empno is null;
Viene visualizzato un messaggio di errore "nessuna tabella: reparto" da sqlite.
Se eseguo operazioni su una tabella, posso utilizzare l'alias e il nome della tabella originale nella stessa query.
Qualcuno sa perché?
Siete probabilmente sbaglia: non è possibile utilizzare il nome originale dopo aver assegnato un alias diverso [anche se si sta eseguendo la query una singola tabella] (http://sqlfiddle.com/#!5/98a82/1). In ogni caso, il comportamento che stai osservando è conforme allo standard SQL, per quanto ne so. –