Podkwerendy z IN
Wynik podkwerenda wprowadzone W (lub NOT IN) jest lista wartości zero lub więcej.Po podkwerenda zwraca wyniki, zewnętrznej kwerendy pozwala korzystać z nich.
Następująca kwerenda wyszukuje nazwy wszystkich produktów, kółka Adventure Works Cycles powoduje, że.
USE AdventureWorks;
GO
SELECT Name
FROM Production.Product
WHERE ProductSubcategoryID IN
(SELECT ProductSubcategoryID
FROM Production.ProductSubcategory
WHERE Name = 'Wheels')
W tym polu jest wynikiem:
Name
--------------------------------------------------
LL Mountain Front Wheel
ML Mountain Front Wheel
HL Mountain Front Wheel
LL Road Front Wheel
ML Road Front Wheel
HL Road Front Wheel
Touring Front Wheel
LL Mountain Rear Wheel
ML Mountain Rear Wheel
HL Mountain Rear Wheel
LL Road Rear Wheel
ML Road Rear Wheel
HL Road Rear Wheel
Touring Rear Wheel
(14 row(s) affected)
Ta instrukcja jest oceniany w dwóch etapach.Po pierwsze wewnętrzne kwerenda zwraca numer identyfikacyjny podkategorii, który odpowiada nazwie "Koło" (17).Po drugie zastępuje tę wartość na kwerendę zewnętrznych, które wyszukuje nazwy produktów, które nie są z numerami identyfikacyjnymi podkategorii w Product.
USE AdventureWorks;
GO
SELECT Name
FROM Production.Product
WHERE ProductSubcategoryID in ('17')
Jedna różnica przy użyciu łączyć, a nie podkwerenda w tym i podobnych problemów jest, że w sprzężeniu umożliwia pokazywanie kolumn z więcej niż jednej tabela do wyniku.Na przykład jeśli chcesz umieścić nazwę podkategorii produktów w wyniku, należy użyć wersja łączyć.
Use AdventureWorks;
GO
SELECT p.Name, s.Name
FROM Production.Product p
INNER JOIN Production.ProductSubcategory s
ON p.ProductSubcategoryID = s.ProductSubcategoryID
AND s.Name = 'Wheels'
W tym polu jest wynikiem:
Name Name
LL Mountain Front Wheel Wheels
ML Mountain Front Wheel Wheels
HL Mountain Front Wheel Wheels
LL Road Front Wheel Wheels
ML Road Front Wheel Wheels
HL Road Front Wheel Wheels
Touring Front Wheel Wheels
LL Mountain Rear Wheel Wheels
ML Mountain Rear Wheel Wheels
HL Mountain Rear Wheel Wheels
LL Road Rear Wheel Wheels
ML Road Rear Wheel Wheels
HL Road Rear Wheel Wheels
Touring Rear Wheel Wheels
(14 row(s) affected)
Następująca kwerenda powoduje znalezienie nazwy wszystkich dostawców, którego poziom kredytu jest dobra, od którego pochodzi Adventure Works Cycles Porządkuje elementy co najmniej 20, a których czas realizacji średnia do dostarczania jest mniejszy niż 16 dni.
Use AdventureWorks;
GO
SELECT Name
FROM Purchasing.Vendor
WHERE CreditRating = 1
AND VendorID IN
(SELECT VendorID
FROM Purchasing.ProductVendor
WHERE MinOrderQty >= 20
AND AverageLeadTime < 16)
W tym polu jest wynikiem:
Name
--------------------------------------------------
Electronic Bike Repair & Supplies
Comfort Road Bicycles
Compete, Inc.
Compete Enterprises, Inc
First Rate Bicycles
First National Sport Co.
Competition Bike Training Systems
Circuit Cycles
Crowley Sport
Expert Bike Co
(10 row(s) affected)
Wewnętrzne kwerendy jest oceniany produkujących numery identyfikatorów dostawców, którzy spełniają kwalifikacji podkwerenda.Następnie obliczany zewnętrznej kwerendy.Należy zauważyć, że może zawierać więcej niż jeden warunek w klauzula WHERE wewnętrznej i zewnętrznej kwerendy.
Za pomocą łączyć, tej samej kwerendy jest wyrażona w taki sposób:
USE AdventureWorks;
GO
SELECT DISTINCT Name
FROM Purchasing.Vendor v
INNER JOIN Purchasing.ProductVendor p
ON v.VendorID = p.VendorID
WHERE CreditRating = 1
AND MinOrderQty >= 20
AND AverageLeadTime < 16
łączyć zawsze można wyrazić jako podkwerenda.Podkwerenda może często, ale nie zawsze być wyrażona jako łączyć.Wynika to z sprzężenia są symetryczne: można dołączyć tabela A do B, w dowolnej kolejności i uzyskać tej samej odpowiedzi. Nie jest taka sama wartość true, jeśli ma być podkwerenda.