Как найти товары, не включенные ни в один заказ на поставку: методы и примеры SQL

Чтобы перечислить все товары, которые не были частью какого-либо заказа на поставку, с помощью SQL, вы можете использовать различные методы в зависимости от структуры вашей базы данных. Вот несколько примеров:

  1. Метод 1. Использование LEFT JOIN и проверка значений NULL

    SELECT i.item_name
    FROM items AS i
    LEFT JOIN purchase_orders AS po ON i.item_id = po.item_id
    WHERE po.item_id IS NULL;

    Этот запрос объединяет таблицу «items» с таблицей «purchase_orders», используя столбец item_id. Он выбирает item_name из таблицы «items», где нет соответствующего item_id в таблице «purchase_orders».

  2. Метод 2: использование подзапроса NOT IN

    SELECT item_name
    FROM items
    WHERE item_id NOT IN (SELECT item_id FROM purchase_orders);

    Этот запрос использует подзапрос для выбора всех идентификаторов item_id из таблицы «purchase_orders», а затем выбирает item_name из таблицы «items», где item_id отсутствует в результате подзапроса.

  3. Метод 3. Использование подзапроса NOT EXISTS

    SELECT item_name
    FROM items AS i
    WHERE NOT EXISTS (SELECT 1 FROM purchase_orders AS po WHERE po.item_id = i.item_id);

    В этом запросе используется подзапрос с условием NOT EXISTS для выбора item_name из таблицы «items», где нет соответствующего item_id в таблице «purchase_orders».

  4. Метод 4: использование LEFT JOIN и фильтрация с помощью IS NULL

    SELECT item_name
    FROM items AS i
    LEFT JOIN purchase_orders AS po ON i.item_id = po.item_id
    WHERE po.item_id IS NULL;

    Этот метод аналогичен методу 1, но использует условие IS NULL для фильтрации совпадающих строк.

  5. Метод 5. Использование подзапроса NOT EXISTS с коррелирующими столбцами

    SELECT item_name
    FROM items AS i
    WHERE NOT EXISTS (SELECT 1 FROM purchase_orders AS po WHERE po.item_id = i.item_id AND po.quantity > 0);

    Этот запрос проверяет наличие заказа на покупку с ненулевым количеством для каждого товара, гарантируя, что возвращаются только товары, не входящие ни в один заказ на покупку.

Это лишь несколько примеров того, как можно добиться желаемого результата. Лучший метод зависит от конкретной схемы и требований вашей базы данных.