MS-Office-Forum

Zurück   MS-Office-Forum > Microsoft Access & Datenbanken > SQL
Registrieren Forum Hilfe Alle Foren als gelesen markieren

Banner und Co.

Antworten
Ads
Themen-Optionen Ansicht
Alt 18.01.2019, 07:34   #1
corned79
Neuer Benutzer
Neuer Benutzer
Standard T-SQL : MSSQL 2016 - Ergebnismenge bei Abfrage - SQL

Hallo liebes Forum,

ich stehe vor einem Problem, was ich derzeit nicht lösen kann - für einen erfahrenen SQL Anwender wahrscheinlich kein Problem darstellen sollte.

Ausgangssituation:
Es gibt drei Tabellen:
Auftragskopf (Kundennummer, Auftragsnummer,...)
Auftragsbody (Auftragsnummer, Artikelnummern, Artikelbezeichnungen,...)
Artikelgruppe (Artikelnummern, Artikelgruppe).

Meine Aufgabenstellung ist nun, alle Kunden herauszufinden, welche über das Jahr gesehen Aufträge hatten, in der im Auftrag nur Artikel aus bestimmten Artikelgruppen (Artikelgruppe 101-117) enthalten waren und keine anderen Artikelgruppen.

Hier stehe ich völlig auf dem Schlauch. Mit einer where Anweisung bekommen ich alle Aufträge, in der die Artikelgruppen enthalten sind angezeigt. In den Aufträgen sind dann jedoch auch andere Artikelgruppen enthalten, diese werden mit meinem Statement nur nicht angezeigt.

Kann mir jemand einen Tipp geben?

Vielen Dank!
corned79 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 18.01.2019, 08:59   #2
Josef P.
MOF Guru
MOF Guru
Standard

Hallo!

Wenn du mittels Abfrage zuerst alle Kunden ermittelst, die Artikel mit der Gruppe 101-117 kauften, dann kannst du mittels not exists die Menge auf jene einschränken die keine anderen Artikel kauften.

Code:

select 
   Kundennummer
from
   Kundentabelle k
where
   exists (
      select  *  from
         (tab join ...)
      where
         Auftragskopf.Kundennummer = K.Kundennummer
         and
         Artikelgruppe between 101 and 117
   )
   and
   not exits (
      select *  from
         (tab join ...)
      where
         Auftragskopf.Kundennummer = K.Kundennummer
         and
         Artikelgruppe < 101 or Artikelgruppe > 117
   )



Eine andere Möglichkeit wäre das Zählen der Auftragspositionen.
Wenn die Anzahl der Positionen mit Gruppe 101-117 mit der nach Gruppe ungefilterten Anzahl übereinstimmt, sind das jene Kunden, die keine anderen Artikel bestellten.

mfg
Josef
Josef P. ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 19.01.2019, 08:43   #3
corned79
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Hallo Josef,

vielen Dank. Das probiere ich gleich einmal aus und melde mich nochmal
corned79 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Ads
Antworten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Besucher: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:44 Uhr.



Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.

Copyright ©2000-2018 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günter Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.