Alt Sorgu ve İlişkili Alt Sorgu Arasındaki Fark

Aşağıdaki SQL Sorgusu parçası normal bir sorgu mu yoksa İlişkili Alt Sorgu mu?

SELECT UserID,
       FirstName,
       LastName,
       DOB,
       GFName,
       GLName,
       LoginName,
       LoginEffectiveDate,
       LoginExpiryDate,
       Password,
       Email,
       ReportingTo,
       Mobile,
       CommunicationPreference,
       IsActive
FROM   (SELECT row_number() OVER (ORDER BY FirstName) AS Row,
               UserID,
               FirstName,
               LastName,
               DOB,
               GFName,
               GLName,
               LoginName,
               LoginEffectiveDate,
               LoginExpiryDate,
               Password,
               Email,
               ReportingTo,
               Mobile,
               CommunicationPreference,
               IsActive
        FROM   DivakarUserRegistration)  T

Ayrıca, birisi her ikisi arasındaki farkı belirtebilir mi?

Yukarıdaki örnek Birlikte İlişkili Alt Sorgu değildir. Türetilmiş Tablo / Satır İçi Görünümdür, çünkü FROM Cümlesi içinde bir Alt sorgudur.

Korelasyonlu bir Alt sorgu, içindeki üst (ana Sorgu) Tablosuna başvurmalıdır. Örneğin, İlişkili Alt sorgu ile N'inci maksimum maaşı bulun:


SELECT Salary 
FROM Employee E1
WHERE N-1 = (SELECT COUNT(*)
             FROM Employee E2
             WHERE E1.salary 
Yorumlar (4)
Çözüm

İlişkili Alt Sorgu, dış sorgudaki değerleri kullanan bir alt sorgudur. Bu durumda, dış sorgunun her satırı için iç sorgunun çalıştırılması gerekir.

Örneğe buradan bakabilirsiniz http://en.wikipedia.org/wiki/Correlated_subquery

Basit alt sorgu, dış sorgudaki değerleri kullanmaz ve yalnızca bir kez hesaplanır:

SELECT id, first_name 
FROM student_details 
WHERE id IN (SELECT student_id
FROM student_subjects 
WHERE subject= 'Science'); 

CoRelated Alt Sorgu Örneği -

Maaşı departmanı için ortalamanın üzerinde olan tüm çalışanları bulmak için sorgu

 SELECT employee_number, name
       FROM employees emp
       WHERE salary > (
         SELECT AVG(salary)
           FROM employees
           WHERE department = emp.department);
Yorumlar (7)

Sanırım aşağıdaki açıklama size yardımcı olacaktır... bunlar arasındaki fark: "İlişkili alt sorgu", ana sorgu (dış sorgu) tarafından başvurulan bir iç sorgudur, öyle ki iç sorgu tekrar tekrar çıkarılmış olarak kabul edilir.

İlişkisiz alt sorgu, dış sorgudan bağımsız bir alt sorgudur ve ana dış sorguya dayanmadan kendi başına çalıştırılabilir.

düz alt sorgu dış sorguya bağımlı değildir,

Yorumlar (1)