Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
БД SQL(засоби ман_пулювання даними.Нетрив_альн_ запити).docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
527.76 Кб
Скачать

6. Використання операцій in і not in у нетривіальних запитах

Оператор IN використовується для порівняння деякого значення із списком значень; при цьому перевіряється, чи входить порівнюване значення в наданий список, чи  ні.

Приклад. Визначити список товарів, які є на складі.

      SELECT Товар.Назва

         FROM  Товар    

         WHERE  КодТовару  IN 

                         (SELECT Склад.КодТовара  FROM Склад);

Приклад. Визначити список товарів, яких немає на складі

     SELECT Товар.Назва

         FROM  Товар    

         WHERE  КодТовару  NOT IN 

                         (SELECT Склад.КодТовара  FROM Склад);

Приклад. Визначити товари, які купують клієнти з Києва (але покупцями яких можуть бути і клієнти з інших місць).

SELECT DISTINCT Товар.Назва         

        FROM Товар,Угода, Клієнт

        WHERE Клієнт.КодКлієнта=Угода.КодКлієнта AND

                        Товар.КодТовару=Угода.КодТовара AND Клієнт.МістоКлієнта='Київ';

 

SELECT DISTINCT Товар.Назва             

        FROM Товар,Угода

        WHERE Товар.КодТовару=Угода.КодТовара AND Угода.КодКлієнта IN

                  (SELECT Клієнт.КодКлієнта

                        FROM Клієнт WHERE Клієнт.МістоКлієнта='Київ‘);

 

Приклад. Визначити товари, які купують лише клієнти з Києва.

Введення в запит фрази "лише (тільки)" вимагає використання операції NOT IN.

SELECT DISTINCT Товар.Назва,

    Клієнт.МістоКлієнта

FROM Товар,Угода,Клієнт

WHERE Клієнт.КодКлієнта=Угода.КодКлієнта

AND Товар.КодТовару=Угода.КодТовара

AND Товар.Назва NOT IN

    (SELECT Товар.Назва

    FROM Товар, Угода. Клієнт

    WHERE Клієнт.КодКлієнта=Угода.КодКлієнта 

    AND  Товар.КодТовару=Угода.КодТовару

    AND Клієнт.МістоКлієнта<>'Київ');

 

Приклад. Визначити товари, які жодного разу не купили клієнти з Києва.

Введення в запит фрази "жодного разу" вимагає використання операції NOT IN.

 SELECT DISTINCT Товар.Назва,

    Клієнт.МістоКлієнта

FROM Товар, Клієнт,Угода

    WHERE Клієнт.КодКлієнта=Угода.КодКлієнта

    AND Товар.КодТовару=Угода.КодТовару

    AND Товар.Назва NOT IN

    (SELECT Товар.Назва

FROM Товар, Клієнт, Угода

    WHERE Клієнт.КодКлієнта=Угода.КодКлієнта

    AND Товар.КодТовару=Угода.КодТовару

    AND Клієнт.МістоКлієнта='Київ');

У вкладеному запиті визначається список товарів, що набувають клієнти з Києва. У зовнішньому запиті вибираються тільки ті товари, які не входять в цей список.

Приклад. Визначити фірми, які купують тільки товари, вироблені лише в своєму місті.

SELECT DISTINCT Клієнт.Фірма

    FROM Товар, Клієнт, Угода

    WHERE Клієнт.КодКлієнта=Угода.КодКлієнта

    AND Товар.КодТовару=Угода.КодТовару

    AND Клієнт.Фірма NOT IN

    (SELECT DISTINCT  Клієнт1.Фірма

    FROM Товар AS Товар1, Клієнт AS Клієнт1, Угода AS Угода1

        WHERE Клієнт1.КодКлієнта=Угода1.КодКлієнта

        AND Товар1.КодТовару=Угода1.КодТовару

        AND Клієнт1.МістоКлієнта<>Товар1.МістоТовару);

У вкладеному запиті визначається перелік фірм, що зробили хоча б одну покупку товару з чужого міста. Потім визначаються фірми, що не входять в цю множину.