[SQL] Hilfe bei einer Abfrage

kulloh

Grünschnabel
Hallo,

ich habe zwei Relationen:

studentSkills ( studentid, skilIid )
workSkills ( workid, skillid )

Nun möchte ich gerne nur die studentids, die mindestens alle skillids einer bestimmten workid haben, durch eine Abfrage ermitteln.
Ich komme einfach nicht auf die Lösung...

LG
kulloh
 
Hallo,

eventuell hilft Dir folgender Ansatz:

SQL:
select s.studentid
  from studentskills s, workskills w
 where s.skillid = w.skillid
   and w.workid = $id
 group by s.studentid
 having count(w.skillid) >= 
  (select count(w2.skillid) from workskills w2 where workid=$id);

Kurze Erklärung dazu:

1 Ich joine ich zuerst alle Studenten mit ihren jeweiligen Skills gegen die Workskills.
2. Ich gruppiere die Ergebnismenge nach Studenten (mittels GROUP BY)
3. Ich suche innerhalb der Gruppen nach Studenten, die mindestens/genau diese Skills besitzen (mittels HAVING und COUNT() )

$id musst du natürlich mit der zu suchenden Work-ID ersetzen.

Hoffe es hilft,

Markus
 

Neue Beiträge

Zurück