Juli 13, 2020, 23:07:16

Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!


abfrage zweier tabellen auf inkonsistenz

Begonnen von thorbrandt, Juni 17, 2010, 13:08:54

⏪ vorheriges - nächstes ⏩

thorbrandt

Hallo,

ich habe zwei tabellen welche ich auf ungleichheiten abfragen möchte.

es geht um eine prüfung von geräten

in der ersten liste stehen alle geräte die erfasst (gebaut) wurden.
in der zweiten liste alle geräte die bereits geprüft wurden.

mit der abfrage sollen die prüfer gezeigt bekommen welche geräte noch getestet werden muessen.
der vergleich geht anhand der gerätenummern.
mit dem abfrageassistenten habe ich eine inkonsistensabfrage definiert, mit dieser bekomme ich alle geräte angezeigt welche noch nicht geprüft wurden.

das ist bereits nicht schlecht, leider brauche ich auch eine liste mit ALLEN erfassten geräten welche mit in einer neuen spalte anzeigt ob die geräte geprüft sind oder nicht.

hier mal mein bisheriger SQL-Code:

SELECT MSRDaten.EKS, MSRDaten.Kurztext, MSRDaten.Langtext, MSRDaten.[MSR-Aufgabe], MSRDaten.Anlagenbereich, MSRDaten.Cabinet, MSRDaten.Typical, MSRDaten.[PLS-Status], MSRDaten.TestTyp, MSRDaten.Teststatus, MSRDaten.Testbemerkung
FROM MSRDaten LEFT JOIN MSRDaten_Import ON MSRDaten.EKS = MSRDaten_Import.EKS
WHERE (((MSRDaten_Import.EKS) Is Null));

Vielleicht könnt ihr mir ja weiterhelfen,


Besten Dank im voraus
Thorbrandt

DF6GL

Hallo,


befürchte stark, dass Dein DB-Konzept sehr zu überarbeiten ist...


Wozu zwei "Listen" (Tabellen)?  Ein Tabelle genügt, die ALLE gebauten und geprüften Geräte beinhaltet.  Ob ein Geräte nur gebaut oder auch geprüft ist, läßt sich mit einem Status-Feld (wie ich sehe, gibt es das doch schon..) behandeln.  Brauchst Du ein Historie, bzw. eine Speicherung evtl. mehrerer Prüfungen, dann sollten die in einer n-Tabelle erfaßt werden.  Dadurch ergäben sich keine solchen Tricksereien mit Inkonsistenz-Abfragen..

Klingon 33

Hallo,

wenn ich das richtig verstanden habe, stehen in der einen Liste nur die Geräte die geprüft wurden und in der Anderen die, die noch zu prüfen sind. Ist das so?
Wenn ja erstelle eine Unionabfrage. hier hast du dann deine Spalte wonach du prüfen kannst.

so ungefähr:
SELECT MSRDaten.EKS, MSRDaten.Kurztext, MSRDaten.Langtext, MSRDaten.[MSR-Aufgabe], MSRDaten.Anlagenbereich, MSRDaten.Cabinet, MSRDaten.Typical, MSRDaten.[PLS-Status], MSRDaten.TestTyp, MSRDaten.Teststatus, MSRDaten.Testbemerkung
FROM MSRDaten
Union SELECT MSRDaten_IMPORT.EKS, MSRDaten.Kurztext, MSRDaten_IMPORT.Langtext, MSRDaten_IMPORT.[MSR-Aufgabe], MSRDaten_IMPORT.Anlagenbereich, MSRDaten_IMPORT.Cabinet, MSRDaten_IMPORT.Typical, MSRDaten_IMPORT.[PLS-Status], MSRDaten_IMPORT.TestTyp, MSRDaten_IMPORT.Teststatus, MSRDaten_IMPORT.Testbemerkung
FROM MSRDaten_Import;

Hierdurch werden alle Datensätze der beiden Tabellen zu einer virtuellen Tabelle zusammengefasst worin du dann selectieren kannst.

mfg
Wer Fehler findet, dar diese behalten.

MzKlMu

Hallo,
die Idee mit der Unionabfrage finde ich nicht so gut. Baue lieber ein ordentliches Datenmodell.
Gruß
Klaus

thorbrandt

Hallo,

ja, die abfrage sollte die tabelle mit den gebauten geräten sein, erweitert um ein zusätzliches Feld "geprüft ja/nein".

war also mein ansatz mit der inkonsistenzabfrage verkehrt?

Grüße Thorbrandt

DF6GL

Hallo,

ja...

Du brauchst EINE Tabelle (für ALLE Geräte) mit einem Feld "Prüfstatus", in das der jeweilige Prüfstatus (am besten die ID einer Status-Liste---> Stammtabelle)  eingetragen wird.

Lass das Andere mit Union- bzw. Inkonsistenzabfragen bleiben..

thorbrandt

Besten Dank für den Hinweis!

ich schau mal ob ich was brauchbares auf die beine gestellt bekomme.

Danke,
Thorbrandt