SQL Datensätze aus zwei Tabellen zusammenführen

sql-schüler

Cadet 2nd Year
Registriert
Juli 2021
Beiträge
16
Hallo zusammen,

ich beschäftige mich mit einer Abfrage, die ich im Anschluss in eine SELECT INTO Abfrage umwandeln möchte. Ich besitze 6 Tabellen:

Tabelle 1: Artikel
Tabelle 2: Einzelteile
Tabelle 3: Artikelkomponenten
Tabelle 4: Artikelfehler
Tabelle 5: Artikelfehler, die dem Artikel zugeordnet werden
Tabelle 6: Artikelfehler, die der Arbeitszelle zugeordnet werden



Bisher konnte ich die Informationen, die ich brauche, durch Verknüpfen von einigen JOINS abfragen. Aber ich komme nicht darauf wie ich die beiden Tabellen mit den Artikelfehlern verknüpfen kann ohne meine Query zu ruinieren. Und zwar sieht das ganze bisher so aus:


SQL:
SELECT artikel.artikelnummer, artikel.artikelbeschreibung, artikelfehler.id_artikelfehler, artikelfehler.artikelfehlerbeschreibung, einzelteile.einzelteilnummer, artikelkomponenten.menge
FROM (((artikel JOIN artikelkomponenten ON artikel.id_artikel = artikelkomponenten.id_artikel)
     JOIN einzelteile ON artikelkomponenten.id_einzelteile = einzelteile.id_einzelteile)
     JOIN artikelfehlerArbeitsplatz ON artikelfehlerArbeitsplatz.id_Arbeitsplatz = artikel.id_Arbeitsplatz)
     JOIN artikelfehler ON artikelfehler.id_artikelfehler = artikelfehlerArbeitsplatz.id_artikelfehler

die Abfrage enthält nur die Artikel, denen Fehlern über die artikelfehlerArbeitsplatz Tabelle zugeordnet worden. Beispielsweise

artikelnummerartikelbeschreibungid_artikelfehlerartikelfehlerbeschreibungeinzelteilenummermenge
1xyz3elektronik niO1232
1xyz4motor niO1232
1xyz5montieren niO1232
1xyz3elekronik niO4561
1xyz4motor niO4561
1xyz5montieren niO4561

Das ist zwar nur ein Ausschnitt für zwei Arten von Einzelteilen eines Artikels aber dürfte zur Veranschaulichung reichen.

Jetzt fehlen mir alle Artikel, die nur Fehler über die Tabelle artikelfehlerArtikel zugewiesen bekommen haben.

Ich frage mich, wie ich alle Artikel mit den beiden Artikelfehlertabellen abrufen kann, da ich danach diese Resultquery in eine Tabelle umwandeln möchte.

Ich hoffe ihr versteht mein Problem und ich freue mich über eure Vorschläge!
 
Mein Ergebnis enthält bisher nur die Artikel mit ihren Einzelteilen und den zugehörigen möglichen Fehlern aus Tabelle 6, also die Fehler die am Arbeitsplatz existieren.

Dazu gibt es aber auch Artikel, die direkt mögliche Fehler zugeordnet haben, hier in dem Fall aus Tabelle 5. Ich möchte die beiden zusammenführen in einer Resultquery, dass ich alle Artikel aus beiden möglichen Fehlergruppen untereinander habe.

Hoffe man versteht das nun besser :D
Ergänzung ()

Jesterfox schrieb:
Wenn ich es richtig verstanden hab: mach 2 getrennte SELECTs und verbinde diese dann mit UNION

also einfach dasselbe für die Tabelle 5 und dazwischen ein UNION? werde ich gleich mal testen und dann berichten :)
Ergänzung ()

@Jesterfox die Anzahl der Datensätze hat sich insgesamt verringert aber beim schnellen Durchscrollen ist mir aufgefallen, dass die fehlenden Artikel enthalten sind. Nur bin ich mir unsicher, ob auch die vorherigen Artikel mit ihren Bestandteilen und Mengen und den zugehörigen möglichen Fehlern alle noch da sind
 
Zuletzt bearbeitet:
Jesterfox schrieb:
Was mir grad noch einfällt, mach mal ein UNION ALL, ansonsten filtert er doppelte Einträge raus.
Bin eigentlich der Meinung, dass ich das nicht brauche, da jeder Datensatz sich unterscheidet oder weshalb würdest du ein UNION ALL empfehlen?
 
Wenn ich es richtig verstanden habe, solltest du mit dem Begriff "outer join" weiterkommen.
 
Das mit dem Union All war nur ne Überlegung weil du jetzt weniger Datensätze als zuvor hast. War mir da auch nicht sicher wie deine Daten genau aussehen, also ob da wirklich keine doppelten Datensätze im Ergebnis entstehen können.

PS: outer join müsste auch gehen, allerdings kriegst du dann zusätzliche Spalten im Ergebnis wo dann entweder die eine oder die andere befüllt ist. Das müsste man im Select wieder zusammenfassen (z.B. mit coalesce)
 
Zurück
Oben