Forum Użytkownikow Subiekt GT
InsERT GT => Dodatki - zestawienia - sfera => Wątek zaczęty przez: Lucus w Lipiec 07, 2023, 14:17:12
-
Hej,
Mam takie zestawienie:
SELECT
tw_symbol,
pwd_data01
FROM
tw__towar
LEFT JOIN pw_Dane ON pwd_IdObiektu = tw_Id
Wynik jest jednak dość dziwny bo pokazuje mi np. dwa razy ten sam symbol, a oprócz tego symbole, które były kiedyś zmieniane.
Np.
Stary symbol produktu to KW1,8.
Został później on jednak zmieniony na KW1.8
I w tym zestawieniu pojawiają się obydwa - z czego to może wynikać?
Symbole były zmieniane przy użyciu zewnętrznego oprogramowania (pominę nazwę bo nie jestem pewien czy można podawać na forum)
W zakładce towary wszystko pojawia się poprawnie, ogólnie stare faktury też w subiekcie wyświetlają się z najnowszymi wersjami symboli.
Ogólnie zestawienia też wydają się działać poprawnie, ale mam wrażenie, że dużo dłużej trwa wyliczanie
Z czego to może wynikać i jak to naprawić?
-
Po uruchomieniu programu ponownie zniknęły stare wersje symbolów, ale wciąż w wynikach wyświetlają się zduplikowane symbole gdzie przy jednym wartość pwd_Data01 jest pusta a przy drugim posiada wartość.
Wiem, że mogę je zlikwidować wpisująć WHERE pwd_Data01 IS NOT NULL, ale nie jestem pewien czy to dobre rozwiązanie (w tym zestawieniu ok, ale jak w innych? np. przy pokazywaniu ilości sprzedanych sztuk?)
-
Tabela pw_Dane zawiera pola wielu typów (dokumenty, towary kontrahenci, finanse). Trzeba uściślić w połączeniu jakiego typu pole chcesz użyć
-
Nie chcę śmiecić forum nowymi tematami więc pozwolę sobie do tego tematu zadać jeszcze jedno pytanie:
Mam napisane przez siebie zestawienie sprzedaży, które działa prawidłowo dopóki nie połączę tabel z cechami aby móc wybrać cechy.
Właściwie dokładniej to gdy wyfiltruję w kontrolce tylko po jednej cesze to jest ok, ale jak już towar zawiera kilka cech i po nich wyfiltruje to mi mnoży x razy wartość sprzedaży.
Chwilę się z tym już męczyłem i nie bardzo wiem jak to rozwiązać. Jedyne co mi przyszło do głowy to jakoś wyliczyć ile dany towar posiada cech i dzielić wartość sprzedaży przez ilość posiadanych cech
-
Nie wiem czy poprawnie, ale poradziłem sobie w poniższy sposób i wygląda na to, że działa - może komuś się przyda:
SELECT
T1.tw_Symbol,
CEILING ({I:Mnożnik:1} * (SUM(T1.Ilosc) / {I:Ile miesięcy wstecz})) AS StanMin
FROM (SELECT DISTINCT
dok_Id,
ob_Id,
ob_TowId,
tw_Symbol,
(ob_IloscMag * ob_Znak) AS ilosc
FROM vwZstSprzWgKhnt
LEFT JOIN tw__towar ON ob_TowId = tw_Id
LEFT JOIN tw_CechaTw ON ob_TowId = cht_IdTowar
WHERE
dok_MagId = 1
AND
(dok_DataWyst BETWEEN DATEADD(MONTH, - {I:Ile miesięcy wstecz},GETDATE()) AND GETDATE())
AND
ob_TowRodzaj = 1
AND
tw_Zablokowany = 0
AND
(tw_IdGrupa IN ({CHL_DB: SELECT -1, '(dowolna)' AS "nazwaGrupy" UNION ALL SELECT grt_Id, grt_Nazwa AS "nazwaGrupy" FROM sl_GrupaTw ORDER BY "nazwaGrupy":Grupa:-1:(dowolna)})
OR
-1 IN ({CHL_DB: SELECT -1, '(dowolna)' AS "nazwaGrupy" UNION ALL SELECT grt_Id, grt_Nazwa AS "nazwaGrupy" FROM sl_GrupaTw ORDER BY "nazwaGrupy":Grupa:-1:(dowolna)})
) --Dwie kontrolki (CHL_DB) mają na celu wymusić domyślnie wybraną opcję [dowolna]
AND
(cht_idCecha IN ({CHL_DB:SELECT -1, '(dowolna)' AS "nazwaCechy" UNION ALL SELECT ctw_id, ctw_Nazwa AS "nazwaCechy" FROM sl_cechaTw ORDER BY "nazwaCechy":Cecha:-1:(dowolna)})
OR
-1 IN ({CHL_DB:SELECT -1, '(dowolna)' AS "nazwaCechy" UNION ALL SELECT ctw_id, ctw_Nazwa AS "nazwaCechy" FROM sl_cechaTw ORDER BY "nazwaCechy":Cecha:-1:(dowolna)})
) --Dwie kontrolki (CHL_DB) mają na celu wymusić domyślnie wybraną opcję [dowolna]
) AS T1
GROUP BY
T1.tw_Symbol