Miałe, do wykonania takie polecenie "Które pary produktów nigdy nie pojawiły się razem? (wykorzystaj łączenie wyników zapytań)"
Pierwsza myśl była taka, ale nie działa.
--create view w1 as
--select p1.Productid as k1, p2.ProductID as k2
-- FROM products p1 CROSS JOIN products p2
--create view w2 as
--select distinct od1.productid as k3, od2.ProductID as k4
--from [order details] od1 cross join [order details] od2
--select p1.Productid as k1, p2.ProductID as k2
--FROM products p1 CROSS JOIN products p2
--except
--select distinct od1.productid as k3, od2.ProductID as k4
--from [order details] od1 cross join [order details] od2
Poszukałem na necie i znalazłem takie rozwiązanie
--create view query45
--as
--select O.orderid, productname
--from products P join [order details] OD on P.productid = Od. productid join orders O on od.orderid = o.orderid
select distinct w1.productname, w2.productname
from query45 w1 join query45 w2 on w1.orderid = w2.orderid and w1.productname<w2.productname
select P1.productname, P2.productname
from products P1 join products P2 on p1.productname<p2.productname
except
select distinct w1.productname, w2.productname
from query45 w1 join query45 w2 on w1.orderid = w2.orderid and w1.productname<w2.productname
Problem jest w jaki sposób ono działa? I dlaczego wynik jest wyświetlany jako wynik 2 zapytań tj. liczbę tych par trzeba sobie zsumować?