Nochmals ein Frage zum gleichen Problem:
Meine aktuelle Abfrage ist von dieser Form (geht das noch einfacher? -> die verschiedenen Summen sind nötig, da teilweise ein Begriff doppelt für eine Id angegeben ist, aber nur einmal zählen darf...):
SELECT b.Id from begrifftabelle as b,medientabelle as m WHERE Medienart='Sachbuch' AND b.Id=m.Id AND b.Id NOT IN(SELECT Id FROM begriff WHERE Begriffstext='PHP') GROUP BY b.Id HAVING SUM(Begriffstext='MySql')>=1 AND SUM(Begriffstext='Hilfe')>=1 AND SUM(Begriffstext='Befehlsreferenz')>=1
Resultat: Die Id aller Medien vom Typ Sachbuch, die die Begriffe "MySql","Hilfe" und "Befehlsreferenz" enthalten, nicht aber den Begriff "PHP".
Jetzt bräuchte ich in dem Moment nicht die eigentlichen Id's, sondern nur mal die Anzahl der Id's, die der Abfrage entsprechen.
Das lässt sich doch bestimmt verwirklichen? Mit "Select COUNT(*)..." zählts mir die Anzahl der Einträge pro Id, die der Abfrage entsprechen. Ich müsste aber die Anzahl der Gruppen haben, die der Abfrage entsprechen, also sozusagen eine Ebene höher. Nach Studium verschiedener sql/mysql Infoseiten komm ich auf keine funktionierende Variante?
Dankeschön!