Zadanie 13.

Używając podkwerend, znajdź magazyny, które dostarczają produkty z zamówienia nr 2393.

Schemat: OE, Tabele: Inventories, Order_Items, Kolumny: product_id, warehouse_id, quantity_on_hand, order_id, Wynik: 39 rows

s13

 

 

 

 

Rozwiązanie

SELECT product_id AS product, warehouse_id AS warehouse, quantity_on_hand AS quantity
FROM inventories
WHERE product_id IN
( SELECT product_id FROM order_items WHERE order_id = 2393
)
ORDER BY product, warehouse;

Wersja która dodatkowo podpowiada czy w magazynie jest wystarczająca ilość towaru:

SELECT product_id, warehouse_id, quantity_on_hand,
(SELECT quantity FROM order_items oi WHERE order_id = 2393
AND inv.product_id = oi.product_id) AS ordered_quantity,
CASE
WHEN (SELECT quantity FROM order_items oi
WHERE order_id = 2393
AND inv.product_id = oi.product_id) <= quantity_on_hand
THEN 'yes'
ELSE 'no'
END AS "ENOUGH?"
FROM inventories inv
WHERE product_id IN
(SELECT product_id FROM order_items WHERE order_id=2393)
ORDER BY product_id, warehouse_id;

[collapse]