SQL-Abfrage - leere & unterschiedliche Einträge identifizieren

Alles rund um die Software-Entwicklung: Programme, Skripte, Projekte etc.
Antworten
Benutzeravatar
Apo
Hartware.net
Turtleboard Veteran
Turtleboard Veteran
Beiträge: 6648
Registriert: 08.03.2004, 22:07
Wohnort: DEL bei HB
Kontaktdaten:

SQL-Abfrage - leere & unterschiedliche Einträge identifizieren

Ungelesener Beitrag von Apo » 23.07.2017, 15:35

Hallo zusammen,

folgendes ...

Meine Ausgangssituation:
Ich ziehe mir Auftragsdaten aus Tabelle #1 (t1) und erweitere sie basierend einiger Kriterien per LEFT JOIN um Klassifizierungsdaten aus Tabelle #2 (t2).

Das sieht dann z.B. so aus:

Code: Alles auswählen

___________________________________________________________________
| t1.packstueck_nr | t1.auftrag_nr | t1.auftrag_pos | t2.klasse1 | t2.klasse2 |
___________________________________________________________________
| 4711                    | 0815              | 01                   | A              | 11            |
| 4712                    | 0816              | 01                   | A              | 12            |
| 4712                    | 0816              | 02                   | A              | 12            |
| 4712                    | 0816              | 03                   | A              | 10            |
| 4713                    | 0817              | 01                   | C              | 05            |
| 4713                    | 0818              | 01                   | D              | 06            |
| 4713                    | 0818              | 02                   | D              | 06            |
___________________________________________________________________

Erläuterungen:
Aufträge (t1.auftrag_nr) können 1 bis n Positionen (t1.auftrag_pos) haben.

Ein Auftrag kann mit seinem 1 bis n Positionen genau einem Packstück (t1.packstueck_nr) entsprechen. Es können aber auch mehrere Aufträge in einem Packstück sein.

Klasse 1 (t2.klasse1) ist Auftrags-bezogen und muss pro Auftrag (t1.auftrag_nr) immer identisch sein, aber wenn mehrere Aufträge in einem Packstück (t1.packstueck_nr) sind, dann können über das gesamte Packstück natürlich unterschiedliche "Klasse 1"-Werte vorhanden sein.

Klasse 2 (t2.klasse2) ist Auftragspositions-bezogen und kann demzufolge innerhalb eines Auftrags (t1.auftrag_nr) unterschiedlich sein - und natürlich auch innerhalb eines Packstücks (t1.packstueck_nr).

Es kann sein, dass Klassifizierungen der 1. und/oder 2. Klasse fehlen. Das soll aber nicht.

Die Verhältnisse sind also:
t1.packstueck_nr : t1.auftrag_nr = 1 : 1 bis n
t1.auftrag_nr : t1.auftrag_pos = 1 : 1 bis n
t1.auftrag_nr : t2.klasse1 = 1 : 1
t1.auftrag_nr : t2.klasse2 = 1 : 1 bis n
t1.auftrag_pos : t2.klasse2 = 1 : 1


Mein Problem:
Aktuell ziehe ich mir mit meinem Select alles:
1. Die "guten" Auftragsdaten, wo weder Klasse 1 noch 2 fehlen und wo Klasse 1 für jeden individuellen Auftrag einheitlich ist.
2. Die "schlechten" (zu klärenden) Auftragsdaten, wo Klasse 1 und/oder Klasse 2 fehlen und wo Klasse 1 innerhalb eines Auftrags womöglich unterschiedlich ist.

Das kann ich mit Excel alles auseinander friemeln, aber viel schneller ginge es, wenn ich für die (1.) "guten" sowie (2.) "schlechten" Auftragsdaten einen separaten Select hätte.

Das übersteigt meine rudimentären SQL-Kenntnisse bzw. ich hab keine Ahnung, wonach ich googlen könnt, um mich einer möglichen Lösung weiter anzunähern.

Ein Wink mit dem Zaunpfahl?
"Die Mütter der Dummen sind immer schwanger." (Quelle: unbekannt)

Antworten