AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Komplizierte SQL-Abfrage

Ein Thema von EmWieMichael · begonnen am 10. Jul 2020 · letzter Beitrag vom 13. Jul 2020
 
EmWieMichael

Registriert seit: 28. Mär 2012
103 Beiträge
 
#1

Komplizierte SQL-Abfrage

  Alt 10. Jul 2020, 08:36
Datenbank: SQL-Server • Version: alle • Zugriff über: Devart
Hallo SQL-Spezis!

Obwohl ich bereits seit einiger Zeit mit SQL arbeite, weiß ich für das nachfolgend beschriebene Problem nichteinmal ansatzweise eine Lösung.

Gegeben sind folgende Tabellen:
- PERSON
- EIGENSCHAFT
- AUFTRAG

Die Tabellen EIGENSCHAFT und AUFTRAG enthalten zu jedem Personensatz 0..n Sätze. Die logische Verbindung
wird über Nummernfelder realisiert: PERSON.NUM enthält einen einmaligen Integerwert, EIGENSCHAFT.PNUM und
AUFTRAG.PNUM erhalten PERSON.NUM und "zeigen" so auf den entsprechenden Personensatz.
Die Auftragstabelle enthält u. a. das Feld AUFTRAG.TYP (Integer) mit Werten zwischen 1 und 20.

So, nun zu meinem Problem:
Ich möchte sämtliche Personen selektieren, die
a) über mindestens eine Eigenschaft verfügen,
und (!)
b) entweder keine Auftragssätze besitzen,
oder (!)
eine beliebige Anzahl Auftragssätze besitzen, davon aber mindestens ein Satz, nicht vom Typ n ist.

Selbstredend ist es der b)-Teil der Abfrage, der meine Stirn in Falten legt. Lässt sich die
Abfrage überhaupt mit SQL realisieren?

Ich bin für jeden Tipp dankbar!

Michael


EDIT

Ein Beispiel:

PERSON
NUM NAME
10 Müller
11 Meyer
12 Schmidt
13 Schulze

EIGENSCHAFT
PNUM WERT
10 Musiker
10 Handballer
11 Tänzer
12 Angler
12 Segler

AUFTRAG
PNUM TYP
10 5
10 8
11 5
13 8
13 9

Setze ich z. B. als Ausschlusskriterium AUFTRAG.TYP = 5 (b-Teil der Abfrage) ein, muss die
Abfrage zu folgendem Ergebnis führen:

10 Müller (er hat mindestens eine Eigenschaft, und einen Auftragssatz <> Typ 5)
12 Schmidt (er hat mindestens eine Eigenschaft, und keinen Auftragssatz)

Nicht im Seklektionsergebnis:
Meyer hat zwar eine Eigenschaft, aber nur Aufrtagssatz vom Typ 5.
Schulze hat zwar einen Auftragssatz <> Typ 5, aber keine Eigenschaft.

Geändert von EmWieMichael (10. Jul 2020 um 09:06 Uhr) Grund: Beispieldaten angefügt
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:23 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz