قلمرو دید در 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