PZL_Id IN
(
select PZL_Id from cdn.prodzlecelem as A join cdn.ProdZlecenia on PZL_Id=PZE_Zlecenie
where
[CDN].[EL_AS_IlosciZrealizowanePozycjiZlecenia](PZE_Zlecenie, PZE_Lp) > 0
)
natomiast nie wiem jak dodatkowo wybrać tylko te PZL_Id, dla których brakuje albo dokumentu RW lub PW.
Napisałem coś takiego. Ale niestety filtr zwraca pustą listę.
Zamysł mam taki, żeby pobierać RW i sprawdzać czy ilość jest <= 0
tylko nie jestem pewien czy tutaj dobrze ograniczam to zapytanie.
Jak w SQL wywołam tego select bez ostatniego warunku: AND b.PZL_Id = PZL_Id
to zapytania zwraca ilość wszystkich dokumentów RW w systemie.
Jestem początkujący w tym temacie, a muszę na szybko przygotować taki filtr więc będę wdzięczny za wszelkie wskazówki.
A jeszcze mam pytanie bo w niektórych filtrach jak sprawdzam ich konstrukcję pojawia się taki magiczny zapis {filtrSQL}.
Co on oznacza?
PZL_Id
in
(
select A.PZL_Id from cdn.prodzlecelem as C join cdn.ProdZlecenia as A on A.PZL_Id=C.PZE_Zlecenie
where
[CDN].[EL_AS_IlosciZrealizowanePozycjiZlecenia](PZE_Zlecenie, PZE_Lp) > 0
AND
(SELECT count(*)
FROM CDN.TraNag INNER JOIN
CDN.TraElem ON CDN.TraNag.TrN_GIDNumer = CDN.TraElem.TrE_GIDNumer INNER JOIN
CDN.TraSElem ON CDN.TraElem.TrE_GIDNumer = CDN.TraSElem.TrS_GIDNumer AND CDN.TraElem.TrE_GIDLp = CDN.TraSElem.TrS_GIDLp INNER JOIN
CDN.ProdZasoby ON CDN.TraSElem.TrS_ZlcNumer = CDN.ProdZasoby.PZA_Id INNER JOIN
CDN.ProdCzynnosci ON CDN.ProdZasoby.PZA_Czynnosc = CDN.ProdCzynnosci.PCZ_Id INNER JOIN
CDN.ProdProcesy ON CDN.ProdProcesy.PPC_Id = CDN.ProdCzynnosci.PCZ_Proces INNER JOIN
CDN.ProdZlecenia AS b ON b.PZL_Id = CDN.ProdProcesy.PPC_Zlecenie INNER JOIN
CDN.OpeKarty ON CDN.TraNag.TrN_OpeNumerZ = CDN.OpeKarty.Ope_GIDNumer
WHERE (CDN.TraNag.TrN_GIDTyp = 1616) AND b.PZL_Id = PZL_Id
) <= 0
)
Doprecyzuje może dokładniej o co mi chodzi bo chyba, źle to wcześniej napisałem.
Posłużę się screenem z zakładki procesy w zleceniu produkcyjnym:
Screenshot 2022-04-14 at 11.14.31.jpg (134.86 KiB) Przejrzano 2235 razy
Dokładnie chodzi o zlokalizowanie takich zleceń, które mają w polu zrealizowane (surowiec lub produkt wynikowy) wartość 0.
W której tabeli są przechowywane te zapisy?
PZL_Id IN
(
select pz.PZA_PZLId from cdn.prodzasoby as pz
left join cdn.traselem as tse on tse.TrS_ZlcNumer = pz.PZA_Id and tse.TrS_GIDTyp = 1616
where pz.PZA_PZLId = PZL_Id AND pz.PZA_TypZasobu = 1 AND tse.TrS_GIDNumer IS NULL
)
OR
PZL_Id in
(
select pz.PZA_PZLId from cdn.prodzasoby as pz
left join cdn.traselem as tse on tse.TrS_ZlcNumer = pz.PZA_Id and tse.TrS_GIDTyp = 1617
where pz.PZA_PZLId = PZL_Id AND pz.PZA_TypZasobu = 0 AND tse.TrS_GIDNumer IS NULL
)
chyba nie bardzo to jest poprawny filtr, bo po wrzuceniu pokazuje u mnie przynajmniej zamknięte zlecenia. Później też popatrzę na to, bo w sumie też mi się przyda, chyba, że poprawiłeś coś i jest ok.
Witam,
Dopinam się do tematu , filtr działa tylko rzeczywiście dobrze jest aby nie były pokazywane ZP zatwierdzone , wystarczy dodać warunek :
PZL_Status<>'zamknięte'
and
Zatem całość powinna wyglądać :
PZL_Status<>'zamknięte'
and
PZL_Id IN
(
select pz.PZA_PZLId from cdn.prodzasoby as pz
left join cdn.traselem as tse on tse.TrS_ZlcNumer = pz.PZA_Id and tse.TrS_GIDTyp = 1616
where pz.PZA_PZLId = PZL_Id AND pz.PZA_TypZasobu = 1 AND tse.TrS_GIDNumer IS NULL
)
OR
PZL_Id in
(
select pz.PZA_PZLId from cdn.prodzasoby as pz
left join cdn.traselem as tse on tse.TrS_ZlcNumer = pz.PZA_Id and tse.TrS_GIDTyp = 1617
where pz.PZA_PZLId = PZL_Id AND pz.PZA_TypZasobu = 0 AND tse.TrS_GIDNumer IS NULL