Announcement

Collapse
No announcement yet.

Alle Datensätze ausgeben, die alle Kriterien erfüllen?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Alle Datensätze ausgeben, die alle Kriterien erfüllen?

    Hallo!

    Leider fehlt mir der passende Suchbegriff, sonst hätte ich schon gegoogled.
    Ich habe folgende Aufgabenstellung:

    In einer Tabelle tblQuali sind verschiedene Qualifikationen von Personen hinterlegt.
    Z.B.:

    PersonID Quali
    1 TrainerscheinA
    2 TrainerscheinA
    1 FS_PKW
    2 FS_LKW



    Nun möchte ich alle Personen ID haben, die z.B. sowohl TrainerscheinA UND den PKW Führerschein (FS_PKW) haben. In der Realität werden sogar n-viele Kriterien abgefragt.

    Ich hätte mehrere Ansätze, wie man so was lösen könnte:
    1. Zuerst eine Kreuztabelle und dann entsprechend auf dieser Tabelle abfragen.
    2. Verschachtelte Query (Select * from tblQuali where (Quali = ‘TrainerscheinA’ AND personID in (select personID from tblQuali where Quali = ‘FS_PKW’))
    3. Union Abfrage und dann die ausgeben, die n – mal vorkommen

    Im Moment tendiere ich zu Variante 1. Aber vielleicht bin ich ja auf dem Holzweg und es gibt einen Königsweg, wie man so was macht (vor allem weniger komplex)

    Vielen Dank auch für Hinweise, nach welchen Begriffen ich da mal googlen kann.

    Marco

  • #2
    Schaue dir mal EXISTS() an. Damit würde deine Abfrage zB so aussehen können:

    Select distinct PersonID from tblQuali A where
    EXISTS (select 1 from tblQuali B where B.PersonID = A.PersonID and B.Quali = 'TrainerscheinA') AND
    EXISTS (select 1 from tblQuali B where B.PersonID = A.PersonID and B.Quali = 'FS_PKW')

    ... das lässt sich natürlich ganz einfach beliebig erweitern :-)

    bye,
    Helmut

    Comment


    • #3
      Hallo,

      andere Möglichkeit:
      [highlight=sql]
      Select A.PersonID from tblQuali A
      where A.Quali in ('TrainerscheinA', 'FS_PKW')
      having count(distinct A.Quali) = 2
      [/highlight]

      Gruß Falk
      Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

      Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

      Comment

      Working...
      X