Daniela Koller: SQL-Problem

Beitrag lesen

Hi Falk

SELECT b.bildnr
  FROM tab AS a
  INNER JOIN tab AS b
       ON (a.bildnr = b.bildnr
           and b.schlagwort = 'Kirche')
  WHERE a.schlagwort = 'Kunst'

Damit klappts hoffentlich (ungetestet mangels rdbms),
ist allerdings keine allgemeine Lösung, klappt nur mit
genau 2 (geändert auch mit mehreren, Performance würde
jedoch massiv leiden).

Wenn du eine alte Version von MySQL hast, dann
geht INNER JOIN noch nicht, dann müsstest du mit
LEFT (OUTER) JOIN arbeiten und die Records die
auf der b Seite keine Einträge haben (ISNULL(b.bildnr))
ausschliessen.

Wenn es dir nur darum geht, Einträge die mehrfach existieren
auszuschliessen kannst du damit arbeiten:

SELECT a.bildnr, count(*) as counti
  FROM tab AS a
  WHERE (a.stichwort in ('stichwort1', 'stichwort2', ..., 'stichwortN')
  GROUP BY a.bildnr
  HAVING counti > entweder anz Stichworte, od anz min Treffer mit den Stichworten

Gruss Daniela