Schwierige Abfrage

Schwierige Abfrage

am 20.07.2007 20:01:06 von Klaus Herzberg

Hallo,
ich habe ein Abfrageproblem, bei dem ich ueberhaupt nicht weiterkomme.

Gegeben:

Tabelle "Gewerke" (mit Hierarchien)

id parentid name
0 -1 Ausbau
1 -1 Sanitaer
2 0 Maurer
3 0 Beton-Macher
4 1 Gas
5 1 Wasser

Tabelle "FirmenGewerke"

firmenid gewerkeid

Tabelle "AusschreibungenGewerke"
ausschreibungsid gewerkeid


Es werden die kompletten Pfade in den Kreuztabellen gespeichert. D.h.
hat eine Firma das Gewerk "Maurer" dann steht in der Tabelle auch die id
fuer "Ausbau"

Das Problem ist allgemein:
Finde anhand der Gewerke der Firmen die passenden Ausschreibungen.

Aber:
Hat eine Firma nur das Gewerke "Ausbau", dann soll diese auch
Ausschreibungen "Maurer" bekommen. Das ist kein Problem, weil sowohl bei
"FirmenGewerke" als auch "AusschreibungenGewerke" das Parent-Element
"Ausbau" mit gespeichert wurde.

Hat aber eine Firma das Gewerke "Maurer", dann soll diese nur dann eine
Ausschreibung erhalten, wenn auch eine "Mauer-Ausschreibung" da ist.
Leider kommt aber sowohl in "FirmenGewerke" als auch
"AusschreibungenGewerke" die ID fuer das Parentelement "Ausbau" vor und
erzeugt beim JOIN einen "Treffer".

Mein Ansatz war bisher:

SELECT t1.ausschreibungsid FROM Ausschreibungen t1
INNER JOIN AuschreibungenGewerke t2
ON t1.ausschreibungsid=t2.ausschreibungsid
INNER JOIN FirmenGewerke t3
ON t2.ausschreibungsid=t3.ausschreibungsid

Das liefert mir also alle Ausschreibungen mit passenden Gewerke der
Firmen. Aber wie frage ich nun ab, dass es nicht passen soll, wenn in
"FirmenGewerke" ein gewerkeid ist, die nicht in "AusschreibungenGewerke"
ist?


Kann vielleicht jemand einen Ansatz liefern? Vielen Dank. Ich hoffe, ich
habe mich halbwegs verstaendlich ausgedrueckt.

mfg. klaus.