قلمرو دید در Derived Table
در زمان استفاده از SubQuery ها باید حواستان به قلمرو دید باشد.
بصورت کلی تمام ستونهای جدول اول در بخش دو دردسترس نیست.
دستور زیر با خطا مواجه خواهد زیرا a.Id در SELECT دوم دردسترس نیست.
SELECT a.Id,
c.Name
FROM MyTable a
JOIN (SELECT b.Name FROM MyTable2 b WHERE b.Id2 = a.Id) c
روش درست استفاده بصورت زیر است:
SELECT a.Id,
c.Name
FROM MyTable a
JOIN (SELECT b.Name,
b.Id2
FROM MyTable2 b) c
WHERE c.Id2 = a.Id
تعریف Derived Table را نیز میتوان بصورت زیر بیان کرد:
یک Derived Table در واقع یک Inner Query است که در بخش FROM یا JOIN یک کوئری اصلی میآید.
اطلاعات بیشتر:
Subqueries