Subquery(Alt sorgu)

Kuika ile Subquery oluşturmayı öğrenin.

FROM yan tümcesinde bir alt sorgu (Subquery)'dur.

FROM ile oluşturulmuş bir alt sorgu, bir sorgunun yürütülmesi sırasında oluşturulan ve daha sonra kaybolan bir derecelendirme tablosuna benzer şekilde davranır.

SELECT TEACHERS.Id ,
Students.Grade FROM (
SELECT Id
FROM Students
WHERE TeacherId IS NULL
) AS Teachers
JOIN Students ON Teachers.Id=Studets.Id

SELECT ile oluşturulmuş alt sorgu

SELECT
Id,
FName,
LName,
(SELECT COUNT(*) FROM Bikes WHERE Bikes.CustomerId=Customers.Id) AS NumberOfBikes
From Customers

Subquery in WHERE clause

Sonuç kümesini filtrelemek için bir alt sorgu kullanın. Örneğin, bu, tüm öğrencileri en yüksek not alan öğrenciye eşit bir notla döndürür.

SELECT * 
FROM Studeents 
WHERE Grade =(SELECT MAX(Grade) FORM Students)

İlişkili Subqueries

İlişkili Alt sorgular, dış sorgularının geçerli satırına başvuru yapan sorgulardır:

SELECT StudentId
FROM Sudent AS e0uter
WHERE Grade > (SELECT AVG(Grade)
FROM Student eInner
WHERE eInner.ClassId =e0uter.ClassId
)
Subquery SELECT AVG(Grade) ... is correlated because it refers to student row e0ter from its outer query

Farklı tablodaki sorguyu kullanarak sorgu sonuçlarını filtreleyin

Bu sorgu, sınıf başkanı tablosunda olmayan tüm öğrencileri seçer.

SELECT *
FROM Students
WHERE StudentID not in (SELECT StudentID FROM Prefects)

LEFT JOIN ile aynı sonuçları elde edebilirsiniz.

SELECT * 
FROM Students AS e
LEFT JOIN Prefects AS s ON s.StudentID=e.StudentID
WHERE s.StudentID is NULL

FROM ile oluşturulmuş Subqueries

Bir derecelendirme tablosu oluşturmak için alt sorguları kullanabilir ve bunu bir "dış" sorgunun FROM yan tümcesinde kullanabilirsiniz.

SELECT * FROM (SELECT student, grade_hi - grade_lo AS grade_;var FROM exam) AS w 
WHERE grade_var >20;

Yukarıdaki, sınav notu değişimi 20'den büyük olan not tablosundaki öğrencileri bulur.

WHERE yan tümcesindeki Subqueries

Aşağıdaki örnek, katılımı ortalama notun altında olan (bir alt sorgu aracılığıyla elde edilen) öğrencileri bulur (öğrenci örneğinden)

SELECT name, participation FROM students
WHERE participation <(SELECT avg(partiğcipation) FROM students);

Last updated