policzenie zamówień w 2014 roku

0

Witam,

mam takie zadanie;
Policzenie na ilu zamówieniach z roku 2014 znajduje się każdy z towarów oraz na jaką ilość sztuk. Podajmy nazwę towaru , Ile Zamówień , Ile Sztuk - posortowane wg Ile Zamówień rosnąco.

Schemat tabel do tego potrzebnych:
screenshot-20191209204105.png

Utknąłem w takim miejscu :
select distinct ProductId, ProductName, OrderId, orderdate from [order] o left join OrderItem oi
on o.id = oi.id left join Product p on oi.id = p.Id
where orderdate between '2014-01-01' and '2014-12-31'
group by orderdate,ProductName, OrderId, ProductId

wynik: screenshot-20191209204308.png

Dlaczego nie widzę nazw Produktów ? Jak poprawnie powinno być to zapytanie ?

Próbowałem innych łączeń ale efektu nie uzyskałem.

Pozdrawiam

Kamil

1

Nie widzisz produktów, bo dałeś LEFT JOIN. To nie byłoby złe, gdybyś jednocześsnie nie pomylił się w warunkach łączenia. Wg mnie powinno być:

select ProductId, ProductName, OrderId, orderdate from [order] o join OrderItem oi
on o.id = oi.OrderId join Product p on oi.ProductId = p.Id
where orderdate between '2014-01-01' and '2014-12-31'
group by orderdate,ProductName, OrderId, ProductId

I przy okazji wywaliłem DISTINCT, który przy grupowaniu jest zbędny...

0

Faktycznie pomogło ale jak zliczyć te produkty ( ProductName ). Wstawienie count zamieniło nazwę na 1.

select ProductId , count (ProductName), OrderId, orderdate from [order] o join OrderItem oi
on o.id = oi.OrderId join Product p on oi.ProductId = p.Id
where orderdate between '2014-01-01' and '2014-12-31'
group by orderdate,ProductName, OrderId, ProductId
order by ProductName

screenshot-20191209215032.png

2

No bo w w select nie pokazujesz productname, skoro zliczasz cały 2014 to po co grupujesz po dacie:

select 
     ProductId , 
     ProductName,
     count( distinct OrderId) ilosczamowien,
     sum(quantity) iloscsztukzamowionych
from 
     [order] o 
     join OrderItem oi on o.id = oi.OrderId 
     join Product p on oi.ProductId = p.Id
where 
      orderdate between '2014-01-01' and '2014-12-31'
group by 
      ProductName, 
      ProductId
order by 
     3
0

Wszystko jasne, dzięki.

1 użytkowników online, w tym zalogowanych: 0, gości: 1