मान लें द्वारा बनाई गई दो तालिकाओं देखते हैं:मैं दो तालिकाओं में शामिल होने पर एक ही क्वेरी में तालिका के ऊर्फ और उसके मूल नाम का उपयोग क्यों नहीं कर सकता?
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;
लेकिन अगर मैं विभाग या रोजगार के लिए एक अन्य नाम का उपयोग, तो मैं केवल अन्य नाम का उपयोग कर सकते हैं और मूल तालिका नाम का उपयोग नहीं कर सकते हैं। उदाहरण के लिए:
select dept.*
from dept as d
left join emp
on (dept.deptno=emp.deptno)
where emp.empno is null;
मुझे स्क्लाइट से "ऐसी कोई तालिका नहीं है: डिप्टी" त्रुटि मिली है।
यदि मैं एक टेबल पर संचालन चलाता हूं, तो मैं उसी क्वेरी में उपनाम और मूल तालिका नाम का उपयोग कर सकता हूं।
कोई भी जानता है क्यों?
असाइन नहीं करते आप शायद गलत कर रहे हैं: यदि आप मूल नाम का उपयोग नहीं कर सकते हैं जब आप एक अलग उर्फ [भले ही आप जानना चाहते हैं सौंपा है एक टेबल] (http://sqlfiddle.com/#!5/98a82/1)। किसी भी घटना में, जो व्यवहार आप देख रहे हैं वह SQL मानक के अनुसार है, जहां तक मुझे पता है। –