[MSSQL] Z podzapytaniem -> bez podzapytania

0

Mam takie oto zapytanie:

SELECT TOP 10 p.prod_id, p.prod_nazwa
FROM zamowienie zam
   INNER JOIN elementy_zamowienia el_zam
   ON zam.zam_id = el_zam.zam_id
   INNER JOIN produkt prod
   ON el_zam.prod_id = prod.prod_id
WHERE el_zam.zam_id
   IN (SELECT zam_id FROM elementy_zamowienia
         WHERE prod_id = 13
         GROUP BY zam_id, prod_id)
   AND zam.zam_data > DATEADD(month, -6, GETDATE())
   AND prod.prod_id <> 13
GROUP BY prod.prod_id, prod.prod_nazwa
ORDER BY COUNT(*) DESC;

Potrzebuję zmodyfikować to zapytanie tak, aby pozbyć się podzapytania i w tej sprawie proszę o pomoc. Poza tym jeśli gdzieś są jakieś błędy również proszę o poprawienie mnie. Dzięki z góry.

0

Może być podał, co chcesz osiągnąć i strukturę tabel?

0

Chodzi dokładnie o coś takiego:

user image

Problem nadal aktualny, tak więc będę wdzięczny za wszelką pomoc.

0

Wystarczy dwa razy dojoinować się do tabeli z produktami. Na jednej ustalić warunki na prod_id=13, a na drugiej prod_id<>13 oraz pogrupować wynik po polach z tej drugiej tabeli z produktami. Powodzenia.

0

A mógłbyś być tak dobry i napisać jak miałoby to wyglądać? :)

0

Ze względu na regulamin oraz dla zasady nie zamieszczę gotowca.

 §4. Forum dyskusyjne
7. Zabronione jest umieszczanie w postach prośby o rozwiązanie zadań domowych, zadań zaliczeniowych. Lenistwo nie jest tolerowane. Można poprosić o rozwiązanie konkretnego problemu, a nie całego zadania, paru zadań.
0

Ale rozwiązanie, które działa mam już w moim pierwszym poście, chodzi mi o optymalizację żeby pozbyć się podzapytania.

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