SCHWERPUNKT

Suche in Daten mit m:n-Beziehungen

Suchen einer Person mit betimmten Skills

Wie aber kann man die Personen finden, die mit den gesuchten Skills aufwarten? Die Lösung ist nicht ganz trivial und verwendet entgegen allen Erwartungen keine Und-Verknüpfung, sondern eine Oder-Verknüpfung. Den ersten Ansatz liefert die Abfrage aus Bild 3, aber sie liefert immer noch nicht genau die gewünschten Datensätze, sondern alle Personen, die mindestens einen der beiden Skills aufweisen.

Bild 3: Die Suche mit dem Oder-Operator liefert alle Datensätze, die mindestens einen der geforderten Skills aufweisen.
Bild 3: Die Suche mit dem Oder-Operator liefert alle Datensätze, die mindestens einen der geforderten Skills aufweisen.

Das hilft insofern weiter, als schon einmal ein Abfrageergebnis vorliegt, das zumindest die gesuchten Datensätze enthält. Wie unterscheiden sich nun die „richtigen“ von den „falschen“ Datensätzen? Die richtigen kommen zweimal im Abfrageergebnis vor. Nun muss man nur noch alle Datensätze rauswerfen, die nicht zweimal auftauchen.

Dazu verwendet man eine Gruppierung und die Berechnung der Anzahl. Gehen Sie folgendermaßen vor:

  1. Aktivieren Sie die Zeile Funktionen im Abfrage-Entwurf.

  2. Ziehen Sie das Feld PersonID ein zweites Mal in das Entwurfsraster, blenden Sie es aus und legen Sie die Funktion Bedingung für dieses Feld fest.

  3. Blenden Sie die Spalte Skills aus.

  4. Legen Sie für die neue Spalte PersonID die Funktion Anzahl fest und stellen Sie als Kriterium für dieses Feld den Wert 2 ein. Das Ergebnis entnehmen Sie Bild 4.

Bild 4: Abfrage, die alle Personen mit den beiden angegebenen Skills ausgibt.
Bild 4: Abfrage, die alle Personen mit den beiden angegebenen Skills ausgibt.

Der Wechsel in die Datenblattansicht bestätigt die Annahme: Die Abfrage liefert das gewünschte Ergebnis.

Wie sieht es nun aus, wenn drei verschiedene Skills gefragt sind? Sie müssen dann die drei durch den Oder-Operator verknüpften Skills als Bedingung für das Feld Skill eintragen und das Kriterium für das Feld mit der Anzahl der gleichen Datensätze auf 3 einstellen. Besonders flexibel ist das natürlich nicht, und um diese Art der Abfrage dynamisch von einem Formular aus aufrufen zu können, ist noch einige Arbeit nötig.