Filtr dokumenty handlowe - załączniki dwa lub więcej

Zapytania SQL, widoki, Crystal, definicje filtrów, szybkich raportów, wydruków, API, Hydra, .NET

Moderator: mikey

Kris86
Posty: 206
Rejestracja: 09 wrz 2021, 18:27
Rola: Administrator CDN XL
Wersja: 2019

Filtr dokumenty handlowe - załączniki dwa lub więcej

Post autor: Kris86 »

Witam,
potrzebował bym filtr który zwróci mi na liście dokumentów, dokumenty FS - które mają dwa lub więcej załączników.

Dziękuję za pomoc

Awatar użytkownika
praiser
Posty: 1091
Rejestracja: 02 lip 2014, 12:22
Rola: Handlowiec CDN XL
Wersja: 2023

Re: Filtr dokumenty handlowe - załączniki dwa lub więcej

Post autor: praiser »

Kod: Zaznacz cały

Trn_GidNumer IN (
   SELECT Trn_GidNumer
   FROM CDN.TraNag
   join CDN.DaneObiekty on TrN_GIDNumer=DAO_ObiNumer and DAO_ObiTyp=Trn_GidTyp
   GROUP BY TrN_GidNumer
   HAVING COUNT(DaO_ObiNumer) > 1
)
--------------------------------
Pozdrawiam
WW

Kris86
Posty: 206
Rejestracja: 09 wrz 2021, 18:27
Rola: Administrator CDN XL
Wersja: 2019

Re: Filtr dokumenty handlowe - załączniki dwa lub więcej

Post autor: Kris86 »

Potrzebuję teraz filtrować te dokumenty, które nie mają załącznika.
Próbowałem przebudować powyższy kod operatorem NOT EXISTS () z WHERE ale nie pomogło.
Rozumiem że tutaj klauzula HAVING z COUNT() nie ma zastosowania?

Jak wyglądałby taki kod?
Dziękuję za wszelką pomoc.

Awatar użytkownika
praiser
Posty: 1091
Rejestracja: 02 lip 2014, 12:22
Rola: Handlowiec CDN XL
Wersja: 2023

Re: Filtr dokumenty handlowe - załączniki dwa lub więcej

Post autor: praiser »

można zamienić IN na NOT IN już bez grupowania i warunków having bo pełny join sprawdzi czy w ogóle istnieje powiązanie
ale lepiej użyć not exists, powinno być szybsze (i bezpieczniejsze przy NULL-ach)

Kod: Zaznacz cały

NOT EXISTS (
   SELECT 1
   FROM CDN.DaneObiekty
   WHERE DAO_ObiNumer = Trn_GidNumer 
     AND DAO_ObiTyp = Trn_GidTyp
)
--------------------------------
Pozdrawiam
WW

Kris86
Posty: 206
Rejestracja: 09 wrz 2021, 18:27
Rola: Administrator CDN XL
Wersja: 2019

Re: Filtr dokumenty handlowe - załączniki dwa lub więcej

Post autor: Kris86 »

praiser pisze:
03 paź 2025, 11:13
można zamienić IN na NOT IN już bez grupowania i warunków having bo pełny join sprawdzi czy w ogóle istnieje powiązanie
ale lepiej użyć not exists, powinno być szybsze (i bezpieczniejsze przy NULL-ach)

Kod: Zaznacz cały

NOT EXISTS (
   SELECT 1
   FROM CDN.DaneObiekty
   WHERE DAO_ObiNumer = Trn_GidNumer 
     AND DAO_ObiTyp = Trn_GidTyp
)
Pomogło bez NOT EXISTS

Kod: Zaznacz cały

Trn_GidNumer NOT IN (
   SELECT Trn_GidNumer
   FROM CDN.TraNag
   join CDN.DaneObiekty on TrN_GIDNumer=DAO_ObiNumer and DAO_ObiTyp=Trn_GidTyp
)

ODPOWIEDZ