<< Click to Display Table of Contents >> Navigation: Filter und SQL-Abfragen > Beispiele für SQL-Filter |
Alle Kunden filtern, die der Gruppe "A" zugeordnet wurden
exists (select grzuord.lfdnr from grzuord inner join gruppen on grzuord.gruppelfdnr=gruppen.lfdnr where grzuord.kundenlfdnr=k.lfdnr and gruppen.kurzbez= 'A')
Der obiger Filter kann in der Kundenverwaltung verwendet werden. Wenn Sie die Kundengruppen im Auftragsmodul filtern möchten, müssen Sie "k.lfdnr" durch "atr.kundenlfdnr" ersetzen:
exists (select grzuord.lfdnr from grzuord inner join gruppen on grzuord.gruppelfdnr=gruppen.lfdnr where grzuord.kundenlfdnr=atr.kundenlfdnr and gruppen.kurzbez= 'A')
Alle Kunden filtern, die NICHT der Gruppe "UV" zugeordnet wurden
not exists (select grzuord.lfdnr from grzuord inner join gruppen on grzuord.gruppelfdnr=gruppen.lfdnr where grzuord.kundenlfdnr=k.lfdnr and gruppen.kurzbez= 'UV')
Kunden filtern, die bestimmten Gruppen zugeordnet wurden
Gruppen lassen sich nur über SQL korrekt filtern.
Der folgende SQL-Filter filtert die Adressen der Gruppen IHREGRUPPE1 und IHREGRUPPE2, wobei ermittelte Adressen nicht der Gruppe DIESEGRUPPENICHT1 und DIESEGRUPPENICHT2 zugeordnet sein dürfen:
( exists (select GRUPPEN.KURZBEZ from GRZUORD, GRUPPEN where GRZUORD.GRUPPELFDNR=GRUPPEN.LFDNR and GRZUORD.KUNDENLFDNR=K.LFDNR and GRUPPEN.KURZBEZ= 'IHREGRUPPE1')
OR exists (select GRUPPEN.KURZBEZ from GRZUORD, GRUPPEN where GRZUORD.GRUPPELFDNR=GRUPPEN.LFDNR and GRZUORD.KUNDENLFDNR=K.LFDNR and GRUPPEN.KURZBEZ= 'IHREGRUPPE2')
)
AND NOT exists (select GRUPPEN.KURZBEZ from GRZUORD, GRUPPEN where GRZUORD.GRUPPELFDNR=GRUPPEN.LFDNR and GRZUORD.KUNDENLFDNR=K.LFDNR and GRUPPEN.KURZBEZ= 'DIESEGRUPPENICHT1')
AND NOT exists (select GRUPPEN.KURZBEZ from GRZUORD, GRUPPEN where GRZUORD.GRUPPELFDNR=GRUPPEN.LFDNR and GRZUORD.KUNDENLFDNR=K.LFDNR and GRUPPEN.KURZBEZ= 'DIESEGRUPPENICHT2')
Artikelgruppen filtern
Artikelgruppen lassen sich ebenfalls per SQL-Filter selektieren, ähnlich wie bei den Kundengruppen (s.o.):
exists (select ArtGrup.Gruppe from ArtGrupZuord, ArtGrup where ArtGrupZuord.ArtGrupLFDNR=ArtGrup.LFDNR and ArtGrupZuord.ArtikelLFDNR=Art.LFDNR and ArtGrup.Gruppe='IHREARTIKELGRUPPE')
Artikelbestand filtern
Wenn Sie den Bestand innerhalb eines SQL-Filters verwenden möchten, müssen Sie beachten, dass der Bestand eines Artikel nicht über das Feld "Bestand" abgefragt werden kann, da der aktuelle Bestand nur über eine Summierung der Lagerbestand-Tabelle möglich ist.
Verwenden Sie deshalb anstelle von "Bestand" den folgenden Ausdruck:
coalesce((select sum(coalesce(LAGERBESTAND.BESTAND,0)) from LAGERBESTAND inner join
LAGER on LAGERBESTAND.LAGERLFDNR=LAGER.LFDNR where LAGERBESTAND.ARTIKELLFDNR=ARTIKEL.LFDNR
and LAGER.BESTANDAUSBLENDEN is NULL),0)
Beispiel, um alle Artikel zu filtern, deren Bestand größer als 0 ist:
Artikel filtern, deren Bestand sich in den letzten 30 Tagen nicht geändert hat
(select max(lagerbestand.geaendertam) from lagerbestand where lagerbestand.artikellfdnr=art.lfdnr) < current_date - 30
Artikel filtern, die als Unterartikel in einer Stückliste enthalten sind
exists( select artstlst.lfdnr from artstlst where artstlst.artikellfdnr=art.lfdnr)
Artikel eines bestimmten Lieferanten filtern
exists( select lfdnr from adressen where trim(adressen.nr)='70000' and adressen.lfdnr=art.lieferantlfdnr)