August 15, 2020, 07:06:40

Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!


Abfrageergebnis1 ohne Abfrageergebnis2

Begonnen von mad, Juli 28, 2020, 21:20:57

⏪ vorheriges - nächstes ⏩

mad

Hallo Zusammen,

eigentlich möchte ich eine Abfrage erstellen die mir aus den Tabellen, siehe Bild2, die ,,InventarNr" (natürlich auch andere Felder, siehe Codes) aus ,,tblArtikel" anzeigt wenn ,,PAS_iO" (Feldtyp: Ja/Nein) aus ,,tblPASchritte" ,,falsch" und ,,PASE_OK" (Feldtyp: Ja/Nein) aus ,,tblPASErgebnisse" auch ,,falsch" ist. Sobald eines der beiden Felder ,,wahr" ist sollte dieser DS nicht mehr angezeigt werden.
Klapp aber nicht. Es werden mir nur soviele DS angezeigt wie es auch DS in "tblPASErgebnisse" gibt.

Nun wollte ich es wie folgt versuchen:
Habe eine erste Abfrage ,,qryGroup1" erstellt (Bild1)

SELECT tblArtikel.ArtikelID, tblArtikel.Pruefintervall, Format(DateAdd("m",[tblArtikel].[Pruefintervall],[tblPrüfAufträge].[PA_Datum]),"yyyy\.mm") AS Naechste_Pruefung_Jahr, tblArtikel.Ausgemustert, tblPASchritte.PAS_iO, tblPASchritte.PASID, *
FROM ((tblTypen INNER JOIN tblArtikel ON tblTypen.TypID = tblArtikel.Artikel_TypID) INNER JOIN tblPrüfAufträge ON tblArtikel.ArtikelID = tblPrüfAufträge.PA_ArtikelID) INNER JOIN tblPASchritte ON tblPrüfAufträge.PAID = tblPASchritte.PAS_PAID
WHERE (((tblArtikel.Ausgemustert)=No));

Dann eine zweite Abfrage ,,qryGroup2" (Bild2)

SELECT tblArtikel.InventarNr, Format(DateAdd("m",[tblArtikel].[Pruefintervall],[tblPrüfAufträge].[PA_Datum]),"yyyy\.mm") AS Naechste_Pruefung_Jahr, tblPASchritte.PAS_iO, tblPASErgebnisse.PASE_OK, tblArtikel.Ausgemustert
FROM ((tblTypen INNER JOIN tblArtikel ON tblTypen.TypID = tblArtikel.Artikel_TypID) INNER JOIN tblPrüfAufträge ON tblArtikel.ArtikelID = tblPrüfAufträge.PA_ArtikelID) INNER JOIN (tblPASchritte INNER JOIN tblPASErgebnisse ON tblPASchritte.PASID = tblPASErgebnisse.PASE_PASID) ON tblPrüfAufträge.PAID = tblPASchritte.PAS_PAID
GROUP BY tblArtikel.InventarNr, Format(DateAdd("m",[tblArtikel].[Pruefintervall],[tblPrüfAufträge].[PA_Datum]),"yyyy\.mm"), tblPASchritte.PAS_iO, tblPASErgebnisse.PASE_OK, tblArtikel.Ausgemustert
HAVING (((tblPASErgebnisse.PASE_OK)=False) AND ((tblArtikel.Ausgemustert)=No));

Nun wollte ich eine dritte Abfrage erstellt die mir alle ,,InventarNr" und weitere Felder aus der Abfrage ,,qryGroup1" anzeigt, allerdings ohne die DS aus Abfrage ,,qryGroup2" bei denen die ,,InventarNr" aus ,,qryGroup1" und ,,qryGroup2" gleich sind.

Aber über einen Anfang (Bild3) auf Basis der ,,qryGroup1" bin ich bisher noch nicht raus gekommen.

SELECT Format([qryGroup1].[InventarNr],"0\.00\.000\.0000") AS InvNr, First(qryGroup1.Naechste_Pruefung_Jahr) AS ErsterWertvonNaechste_Pruefung_Jahr, qryGroup1.Pruef_M_J, qryGroup1.InventarNr, qryGroup1.PAS_iO
FROM qryGroup1
GROUP BY Format([qryGroup1].[InventarNr],"0\.00\.000\.0000"), qryGroup1.Pruef_M_J, qryGroup1.InventarNr, qryGroup1.PAS_iO
HAVING (((Max(qryGroup1.Naechste_Pruefung_Jahr))<=Format(DateAdd("m",6,Date()),"yyyy\.mm"))) OR (((qryGroup1.PAS_iO)=False));

Wie könnte ich die DS aus ,,qryGroup2" von den DS ,,qryGroup1" quasi subtrahieren?
Ich hoffe ich konnte es einigermaßen verständlich erklären.
Wäre nett wenn mir jemand Hilfestellung bei der Lösungsfindung geben könnte.

Gruss
mad

ebs17

Zitateigentlich möchte ich eine Abfrage erstellen die mir aus den Tabellen, siehe Bild2, die ,,InventarNr" (natürlich auch andere Felder, siehe Codes) aus ,,tblArtikel" anzeigt wenn ,,PAS_iO" (Feldtyp: Ja/Nein) aus ,,tblPASchritte" ,,falsch" und ,,PASE_OK" (Feldtyp: Ja/Nein) aus ,,tblPASErgebnisse" auch ,,falsch" ist. Sobald eines der beiden Felder ,,wahr" ist sollte dieser DS nicht mehr angezeigt werden
Halten wir uns schlicht daran.
SELECT * FROM tblPASErgebnisse WHERE PASE_OK = FalseSELECT * FROM tblPASchritte WHERE PAS_iO = FalseErzeuge diese Abfragen und verknüpfe sie dann statt der kompletten Tabellen mit den weiteren Tabellen.
Verwendete INNER JOIN's ergeben dann automatisch eine UND-Verknüpfung.

Deinen anderen Gedankengängen bin ich nicht gefolgt.
Mit freundlichem Glück Auf!

Eberhard

mad