Neuigkeiten:

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

Mobiles Hauptmenü

Abfrage mit mehreren Kriterien auf der selben Spalte -.-

Begonnen von Xoar, Mai 08, 2019, 15:31:19

⏪ vorheriges - nächstes ⏩

Xoar

Hallo alle zusammen,

ich komme gerade nicht weiter und bräuchte mal einen Denkanstoß.

Es gibt eine tblMitarbeiterQualis in dem es zwei relevante Felder gibt: F_MitarbeiterID und F_QualiID.
Nun möchte ich eine Abfrage erstellen die mir alle MitarbeiterIDs anzeigt, bei denen die  F_QualiID z.B. 12 UND 13 ist.
Ich bekomme es aber nur mit ODER hin, sobald ich eine AND Verkettung benutzte, zeigt er mir keine Datensätze mehr an.
Ja es gibt genug IDs bei denen beide Kriterien vorhanden sind.

Er soll mir halt die IDs anzeigen, die in diesem Fall beide F_QualiIDs (12 und 13) haben.

Versucht habe ich:

SELECT F_MitarbeiterID
FROM tblQualiMitarbeiter
WHERE F_QualiID=12 AND F_QualiID=13


Wie komm ich da weiter?

Ich sehe schon das der Fehler darin liegt, dass er beide Werte für F_QualiID in dem selben Datensatz überprüft, nur wie löse ich das?

Grüße


MzKlMu

Hallo,
ich bin der Meinung, es muss ein Oder (Or) sein.
Datensätze mit der ID 12 Oder 13, Und macht hier keinen Sinn.
Gruß Klaus

Xoar

Hi,

ja habe ich am Anfang auch gedacht, aber dann könnte es ja sein dass Mitarbeiter X die F_QualiID 12 hat, aber NICHT 13.
Ich will aber nur die sehen, die BEIDE IDs haben.


MzKlMu

Hallo,
sorry, ich hatte das BEIDE überlesen.
Da muss ich jetzt aber passen, habe ich auf die Schnelle auch nichts auf Lager.
Da musst Du mal auf die SQL Spezis warten.
Gruß Klaus

PhilS

Zitat von: Xoar am Mai 08, 2019, 15:31:19
Nun möchte ich eine Abfrage erstellen die mir alle MitarbeiterIDs anzeigt, bei denen die  F_QualiID z.B. 12 UND 13 ist.

SELECT m1.F_MitarbeiterID
FROM tblQualiMitarbeiter m1
WHERE m1.F_QualiID = 12
AND EXISTS (
SELECT 'x'
FROM tblQualiMitarbeiter m2
WHERE m1.F_MitarbeiterID = m2.F_MitarbeiterID
AND m2.F_QualiID = 13
);
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

Xoar

Hallo,

danke für das Beispiel.
Anhand der Komplexität merke ich aber, dass diese Variante recht Aufwendig wird.

Mein Plan war in einem Listenfeld x beliebige Einträge zu markieren, die dann nach diesem Prinzip dargestellt werden. Aber wenn ich dann 7 oder 8 Einträge markiert hätte, wäre das ja eine riesen Abfrage mit 7 Unterabfragen und das alles dynamisch....

Achherjeee

Evtl. geht das mit ner VBA Schleife einfacher :/


Beaker s.a.

@Xoar
Wenn du die Kriterien aus einem Listfeld holst, kommst du nicht darum
herum die Abfrage in VBA zusammenzustellen.
Ich glaube aber nicht, dass du da jeweils entsprechend viele Subselects
benötigst. Dabei zu helfen muss ich im Moment aber den SQL-Spezies
überlassen.
gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

ebs17

ZitatNun möchte ich eine Abfrage erstellen die mir alle MitarbeiterIDs anzeigt, bei denen die  F_QualiID z.B. 12 UND 13 ist.
Die einfache AND-Verkettung der Kriterien kann nicht funktionieren, da ein Datensatzfeld nur immer einen Wert enthalten kann und somit bei Filterung eine leere Datenmenge entsteht.

SELECT
   F_MitarbeiterID
FROM
   tblQualiMitarbeiter
WHERE
   F_QualiID IN (12, 13)
GROUP BY
   F_MitarbeiterID
HAVING
   COUNT(*) = 2

Die farbig markierten Anteile lassen sich nicht als Parameter direkt übergeben, sondern müssen über ein Zusammensetzen der SQL-Anweisung per VBA eingesetzt werden. Da ein Listenfeld mit Mehrfachauswahl sowieso nur per VBA ausgewertet werden kann, ist das dann kein großer Zusatzaufwand.

Bitte beachten: Die Anzahl der Elemente in der IN-Auflistung muss mit jener in der HAVING-Klausel übereinstimmen mit dem Vorbehalt, dass die FK-Kombinationen in der Tabelle duplikatfrei sind.
Mit freundlichem Glück Auf!

Eberhard

Xoar

Ah vielen Dank, da kann ich gut mit arbeiten.
Das dynamische Anpassen in VBA kriege ich hin.