Autor Wątek: Zestawienie sprzedaży  (Przeczytany 3328 razy)

0 użytkowników i 1 Gość przegląda ten wątek.

Offline nxt

  • Nowy użytkownik
  • *
  • Wiadomości: 5
  • Reputacja +0/-0
  • Wersja programu: Subiekt GT 1.25 SP1
Zestawienie sprzedaży
« dnia: Maj 10, 2018, 13:38:45 »
Potrzebuję wygenerować zestawienie ilościowe sprzedaży towarów (pa,fs) i zamówień z konkretnej grupy towarowej (niezrealizowane), oraz stanu towaru z okresu np dwóch tygodni. Dałem z tym radę tyle że rozbijam się o to że na liście muszę mieć też towary które się nie sprzedawały / nie zostały zamówione, czyli lista musi także zawierać te na których obrót był 0. Jakieś pomysły, podpowiedzi?

Offline PrzemekP

  • Nowy użytkownik
  • *
  • Wiadomości: 33
  • Reputacja +2/-0
  • Wersja programu: 1.60
Odp: Zestawienie sprzedaży
« Odpowiedź #1 dnia: Maj 10, 2018, 13:48:21 »
Nie wiem czy rozumiem w czym problem - wyciągasz tylko towary występujące na fakturach i paragonach w danym okresie? Jeżeli tak, to po prostu wyciągnij wszystkie towary z grupy i ich sprzedaży. Może używasz inner join zamiast left join i dlatego ucina Ci część towarów.

Offline nxt

  • Nowy użytkownik
  • *
  • Wiadomości: 5
  • Reputacja +0/-0
  • Wersja programu: Subiekt GT 1.25 SP1
Odp: Zestawienie sprzedaży
« Odpowiedź #2 dnia: Maj 11, 2018, 13:05:59 »
Coś takiego wygenerowałem,
SELECT
  tw__Towar.tw_Symbol
 ,tw__Towar.tw_Nazwa
 ,SUM(dok_Pozycja.ob_Ilosc) AS tw_sprzedaz
FROM dbo.dok_Pozycja
LEFT OUTER JOIN dbo.tw__Towar
  ON dok_Pozycja.ob_TowId = tw__Towar.tw_Id
LEFT OUTER JOIN dbo.dok__Dokument
  ON dok_Pozycja.ob_DokHanId = dok__Dokument.dok_Id
WHERE dok__Dokument.dok_Typ IN (2, 21)
AND tw__Towar.tw_IdGrupa = 21
AND dok__Dokument.dok_DataWyst BETWEEN '2018-04-01' AND '2018-04-30'
GROUP BY tw__Towar.tw_Symbol
        ,tw__Towar.tw_Nazwa

i to pokazuje tylko towary o sprzedaży > niż 0 czyli 1546 pozycji z 1800, a ja chcę całą listę towarów z tej grupy czyli 1800

Offline birds22

  • Ekspert
  • *****
  • Wiadomości: 9235
  • Reputacja +1306/-21
  • Wersja programu: Najnowsza
Odp: Zestawienie sprzedaży
« Odpowiedź #3 dnia: Maj 11, 2018, 14:29:09 »
A co niby ma pokazać?
Wybierasz jako podstawową tabelę dok_pozycja, która już ma tylko towary, które są na dokumentach i łączysz ją lewostronnie z tabelą  towarów (czyli wszystkie z dok_pozycja i te tw__towar, które są z dok_pozycja).

Wyświetl najpierw tabelę towarów i podczep do niej lewostronnie tabelę ze sprzedażą i będziesz miał to chcesz.
Sławek, Zduńska Wola

Offline candy

  • Zaawansowany użytkownik
  • ****
  • Wiadomości: 4919
  • Reputacja +173/-11
Odp: Zestawienie sprzedaży
« Odpowiedź #4 dnia: Maj 11, 2018, 15:26:21 »
Uzupełniając wypowiedź Sławka to ten fragment
SELECT
 (...)
FROM dbo.dok_Pozycja
LEFT OUTER JOIN dbo.tw__Towar
  ON dok_Pozycja.ob_TowId = tw__Towar.tw_Id
Oznacza w uproszczonym tłumaczeniu:
pokaż wszystkie pozycje dokumentów, nawet te które nie są powiązane z żadnymi towarami/usługami z kartoteki.

a wg opisu miało być:
pokaż wszystkie towary z kartoteki, nawet te które nie są powiązane z żadnymi pozycjami dokumentów

Czyli
FROM tw_Towar
LEFT JOIN dok_Pozycja
Nie pytaj co rząd może zrobić dla Ciebie. Spytaj czy mógłby tego nie robić.

Offline nxt

  • Nowy użytkownik
  • *
  • Wiadomości: 5
  • Reputacja +0/-0
  • Wersja programu: Subiekt GT 1.25 SP1
Odp: Zestawienie sprzedaży
« Odpowiedź #5 dnia: Maj 12, 2018, 06:54:56 »
SELECT
 tw__Towar.tw_Nazwa AS sp_nazwa
 ,tw__Towar.tw_Symbol AS sp_iosc
 ,SUM(dok_Pozycja.ob_Ilosc) AS tw_sprzedaz
FROM dbo.tw__Towar
LEFT JOIN dbo.dok_Pozycja
  ON tw__Towar.tw_Id = dok_Pozycja.ob_TowId
LEFT JOIN dbo.dok__Dokument
  ON dok_Pozycja.ob_DokHanId = dok__Dokument.dok_Id
  WHERE tw_IdGrupa IN (21) AND tw_Zablokowany = 0 AND dok_DataWyst BETWEEN '2018-01-01' AND '2018-05-01'
GROUP BY tw_Symbol,tw_Nazwa

ok. poszedłem po left join od tabeli tw__towar ... dalej efekt bez zerowych wartości :(

Offline birds22

  • Ekspert
  • *****
  • Wiadomości: 9235
  • Reputacja +1306/-21
  • Wersja programu: Najnowsza
Odp: Zestawienie sprzedaży
« Odpowiedź #6 dnia: Maj 12, 2018, 09:58:06 »
Przecież masz warunki, które ograniczają zbiór wynikowy niezależnie od sposobu połączenia.

Co będzie np w polu dok_datawyst przy takim połączeniu jakie masz w swoim zestawieniu dla towarów, które nie były sprzedawawne w wybranym okresie?

Sławek, Zduńska Wola

Offline nxt

  • Nowy użytkownik
  • *
  • Wiadomości: 5
  • Reputacja +0/-0
  • Wersja programu: Subiekt GT 1.25 SP1
Odp: Zestawienie sprzedaży
« Odpowiedź #7 dnia: Maj 12, 2018, 13:28:53 »
Przepraszam. Pytam o podpowiedź. Jak bym wiedział co mam zrobić to bym szanownym forumowiczom nie zawracał pewnej części ciała.
Wiem że znajdzie się mądry który podpowie co i jak mam zrobić co by zamierzony efekt osiągnąć.
Założenie takie:

1. Wszystkie towary z grupy o statusie  niezablokowane
2. Ich sprzedaż sumaryczne za ostatnie np 14 dni, włącznie z tymi które się w tym czasie nie sprzedały.
3. Wujka na G też już pytałem, ale albo mam jeszcze za małą wiedzę albo nie potrafię pewnej zależności zrozumieć. Wiem że sum i group ograniczają wyniki a tego chcę uniknąć więc pytam

Pozdrawiam,
Adam

Offline birds22

  • Ekspert
  • *****
  • Wiadomości: 9235
  • Reputacja +1306/-21
  • Wersja programu: Najnowsza
Odp: Zestawienie sprzedaży
« Odpowiedź #8 dnia: Maj 12, 2018, 21:00:22 »
Ale ja Ci właśnie podpowiadam.
Jakbym Ci napisał to zapytanie to nie byłaby podpowiedź.

Napisałem Ci wcześniej:
Wyświetl najpierw tabelę towarów i podczep do niej lewostronnie tabelę ze sprzedażą i będziesz miał to chcesz.
Podpowiadam jeszcze bardziej - "tabela" ze sprzedażą to podzapytanie które już wyliczasz.


Bez podzapytania też się da zrobić ale trzeba określić warunki tak, aby nie filtrowało towarów bez sprzedaży.
« Ostatnia zmiana: Maj 12, 2018, 21:10:11 wysłana przez birds22 »
Sławek, Zduńska Wola

Offline nxt

  • Nowy użytkownik
  • *
  • Wiadomości: 5
  • Reputacja +0/-0
  • Wersja programu: Subiekt GT 1.25 SP1
Odp: Zestawienie sprzedaży
« Odpowiedź #9 dnia: Maj 12, 2018, 22:01:48 »
tym tokiem myślenia poszedłem ... działa ;) thx

Forum Użytkownikow Subiekt GT

Odp: Zestawienie sprzedaży
« Odpowiedź #9 dnia: Maj 12, 2018, 22:01:48 »