Udostępnij za pośrednictwem


Podkwerendy z w

Wynik podzapytanie wprowadzone W (lub NOT IN) jest listą wartości zero lub więcej.Po podzapytanie zwraca wyniki, zewnętrznej kwerendy powoduje, że ich użycie.

Następująca kwerenda wyszukuje nazwy produktów koło Adventure Works Cycles ułatwia.

USE AdventureWorks2008R2;
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)

To instrukcja jest oceniany w dwóch etapach.Po pierwsze wewnętrzne kwerenda zwraca numer identyfikacyjny podkategorii, który odpowiada nazwie "Koła" (17).Po drugie, wartość ta jest podstawiona do zewnętrznej kwerendy, nazwy produktu, który znajduje przejdź z numerami identyfikacyjnymi podkategorii w Product.

USE AdventureWorks2008R2;
GO
SELECT Name
FROM Production.Product
WHERE ProductSubcategoryID IN ('17');

Jedna różnica w za pomocą łączyć zamiast podzapytanie w tym i podobnych problemów jest, że łączyć umożliwia pokazywanie kolumn z więcej niż jednej tabela w wyniku.Na przykład jeśli chcesz umieścić nazwę podkategoria produktu w wyniku należy użyć wersja łączyć.

Use AdventureWorks2008R2;
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 wszystkich dostawców, których poziom kredytu jest dobry, od którego pochodzi nazwa Adventure Works Cycles zamówień, co najmniej 20 elementów i których średni czas realizacji do dostarczenia jest mniejsza niż 16 dni.

Use AdventureWorks2008R2;
GO
SELECT Name
FROM Purchasing.Vendor
WHERE CreditRating = 1
AND BusinessEntityID IN
    (SELECT BusinessEntityID
     FROM Purchasing.ProductVendor
     WHERE MinOrderQty >= 20
     AND AverageLeadTime < 16);

W tym polu jest wynikiem:

Name

--------------------------------------------------

Compete Enterprises, Inc

International Trek Center

First National Sport Co.

Comfort Road Bicycles

Circuit Cycles

First Rate Bicycles

Jeff's Sporting Goods

Competition Bike Training Systems

Electronic Bike Repair & Supplies

Crowley Sport

Expert Bike Co

Team Athletic Co.

Compete, Inc.

(13 row(s) affected)

Sprawdzane jest wewnętrzną kwerendą produkujących numery identyfikatorów dostawców, którzy spełniają kwalifikacji podzapytanie.Następnie sprawdzane jest kwerenda zewnętrznego.Należy zauważyć, że w klauzula WHERE, wewnętrzne i zewnętrzne kwerenda może zawierać więcej niż jeden warunek.

Za pomocą łączyć, tej samej kwerendzie wyrażony następująco:

USE AdventureWorks2008R2;
GO
SELECT DISTINCT Name
FROM Purchasing.Vendor v
INNER JOIN Purchasing.ProductVendor p
ON v.BusinessEntityID = p.BusinessEntityID
WHERE CreditRating = 1
AND MinOrderQty >= 20
AND AverageLeadTime < 16;

łączyć zawsze można wyrazić jako podzapytanie.podzapytanie można często, ale nie zawsze być wyrażone jako łączyć.Jest tak, ponieważ są symetryczne sprzężenia: Możesz łączyć tabela a do b w dowolnej kolejności i korzystaj z tej samej odpowiedzi.Nie jest taka sama wartość true, jeśli jest zaangażowany, podzapytanie.

Zobacz także

Koncepcje