yo,
Du scheinst die Anforderung besser zu kennen als der Fragesteller, wir haben doch ganz klar ein "Ich möchte nun gezielt nach Firmen suchen, welche mehrere Projekte zugeordnet haben, was ich mit untenstehendem Statement erfolglos versucht habe zu realisieren." zu lesen bekommen.
egal ob nun alle kritereien gleichzeit oder nur mindestens einer zutreffen soll, die problematik bleibt letzlich die gleiche, weswegen er auch eine leere datenmenge bekommt. er hat die bedinungen logisch falsch miteinander verknüpft. eine ergebnisdatensatz kann nicht gleichzeitg mehrere projekten zugeordnet sein und somit ist der AND Operator fehl am platz. genau das erzeugt die leere ergebnismenge. darauf habe ich mich fokusiert, ist aber offensichtlich nicht gut beschrieben von mir.
wenn nun alle bedinungen gleichzeitig zutreffen sollen, dann bleibt die abfrage mit dem OR operator so bestehen, wie ich sie geschrieben habe. genau darin besteht meiner meinung nach der denkfehler, dass er zwar alle gleichzeitig haben will, aber trotzdem den OR einsetzen muss. das mag auf den ersten blick ein wenig schief klingen, führt aber zum ergebnis.
das einzige, was man an meiner ersten abfrage ändern muss, ist eine korrelierte unterabfrage in der WHERE klausel, welche die anzahl der treffer einer firmen_id prüft, in diesem falle auf 4, sprich:
SELECT F.FNr, F.KdNr, F.Firmenname, F.Zusatz, F.Url, A.Strasse, A.PLZ, A.Ort
FROM FIRMA F, ADRESSE A
WHERE F.Adresse = A.AdrIndex
AND (A.Ort LIKE '%$Ort%' OR A.Plz LIKE '$Ort%' )
AND 4 =
(
SELECT COUNT(*) FROM FIRMA_PROJEKT FP
WHERE F.FNr = FP.FNr
AND
(
FP.ProjektNr = 7 AND FP.ProjektStatus > 3
OR
FP.ProjektNr = 29 AND FP.ProjektStatus > 3
OR
FP.ProjektNr = 90 and FP.ProjektStatus > 3
OR
FP.ProjektNr = 38 and FP.ProjektStatus > 3
)
)
man kann sehen, dass die bedinungen immer noch logisch mit OR verbunden sind.
was dein tipp betrifft, die fachlichkeit ist immer wichtig zu kennen, ohne zweifel. aber wichtig ist es dann auch, die problemtaiken dabei zu erkennen und richtig umzusetzen. und ich sehe in deinem ansatz keine hinweis auf das kernproblem.
Ilja