Archiwa tagu: in

SQL IN z CASE

SQL IN z CASE



DEFINICJA

Polecenie IN opisywałem tutaj, ale ostatnio „buszując” w Internecie natrafiłem na ciekawe pytanie dotyczące zapytania SQL i postanowiłem rozwinąć trochę poprzedni wpis o rozwiązanie z CASE i podzapytaniem.


Przykład zastosowania polecenia IN z CASE

SELECT
*
FROM
nazwa_tabeli
WHERE
nazwa_pola IN (
CASE
WHEN warunek1 THEN wartość1
WHEN warunek2 THEN wartość2
ELSE warunek3 THEN wartość3
END
)

Widzimy tutaj że w zależności od wyniku polecenie CASE zostanie wybrana wartość która będzie argumentem dla polenia IN.


Przykład zastosowania polecenia IN z podzapytaniem

SELECT
*
FROM
nazwa_tabeli
WHERE
nazwa_pola IN (
SELECT TOP 1
nazwa_pola
FROM
nazwa_tabeli
WHERE
warunek
)

W tym przypadku zbiorem wartości dla IN jest wynik podzapytania.
Można by pójść o krok dalej i uzależnić wartości dla zbioru IN od zmiennej.


Przykład zastosowania polecenia IN z CASE i z deklaracją zmiennej.

DECLARE @zmienna varchar(5) = ‚100’

SELECT
*
FROM
nazwa_tabeli
WHERE
nazwa_pola IN (
CASE
WHEN @zmienna < 100 THEN wartość1
WHEN @zmienna = 100 THEN wartość2
WHEN @zmienna > 100 THEN wartość3
END
)


Przykład zastosowania polecenia IN z podzapytaniem i z deklaracją zmiennej.

DECLARE @zmienna varchar(5) = ‚100’

SELECT
*
FROM
nazwa_tabeli
WHERE
nazwa_pola IN (
SELECT TOP 1
nazwa_pola
FROM
nazwa_tabeli
WHERE
nazwa_pola <= @zmienna
)


SQL IN

SQL IN



DEFINICJA

Operator IN służy do określenia zbioru dopuszczalnych wartości dla danego pola w warunku w klauzuli WHERE. Zbiór dopuszczalnych wartoścu umieszczamy w nawiasie a poszczególne wartości rozdzielamy przecinkami. Musimy zwrócić takżę uwagę jakie typy danych są wartościami dalej kolumny jeśli np. wartościami w kolumnie są ciągi znaków to każdą wartość musimy ująć w pojedynczy cudzysłów.

SQL IN składnia

SELECT
wyświetlane_dane(kolumny)
FROM
źródło_danych
WHERE
nazwa_kolumny IN (wartość1 , wartość2 , wartość3)


Przykład zastosowania IN (baza Adventureworks)

Wyświetl produkty (tylko kolumny: ID, Nazwa Produktu, Numer Produktu, Kolor) które są w kolorze czarnym i srebrnym.

SELECT
ProductID
,Name
,ProductNumber
,Color
FROM
Production.Product
WHERE
Color IN (‚Silver’ , ‚Black’ , ‚Silver/Black’)

 


 Przykład zastosowania IN (baza Northwind)

Wyświetl wszystkich klientów (tylko kolumny: NazwaKontaktu, Adres, Miasto, Kraj, Telefon) z Francji i Niemiec.

SELECT
ContactName
,Address
,City
,Country
,Phone
FROM
Customers
WHERE
Country IN (‚Germany’,’France’)