Probier's mal hiermit:
SELECT titel FROM buch b WHERE
EXISTS
(SELECT * FROM schlagwort, buchschlagwortrel WHERE
schlagwort.name = "Evolutionsbiologie" AND
schlagwort.schlagwortnr = buchschlagwortrel.schlagwortnr AND
buchschlagwortrel.buchnr = b.buchnr)
AND EXISTS
(SELECT * FROM schlagwort, buchschlagwortrel WHERE
schlagwort.name = "Wissenschaftsgeschichte" AND
schlagwort.schlagwortnr = buchschlagwortrel.schlagwortnr AND
buchschlagwortrel.buchnr = b.buchnr)
Die beiden EXISTS-Blöcke sind im Prinzip gleich, nur dass sie eben auf die unterschiedlichen Schlagworte überprüfen.
Falls es funktioniert, erwarte ich entsprechende Opfergaben und eine angemessene Ehrerbietung!
![Wink ;)](https://www.tanelorn.net/Smileys/default/wink.gif)
Ansonsten probier mal Marzans Vorschlag in folgender Abwandlung:
SELECT buch.titel FROM buch, schlagwort sw1, schlagwort sw2,
buchschlagwortrel bwr1, buchschlagwortrel bwr2 WHERE (sw1.name = "Wissenschaftsgeschichte" and sw2.name = "Evolutionsbiologie") AND
bwr1.buchnr = buch.buchnr AND bwr1.schlagwortnr = sw1.schlagwortnr
AND bwr2.buchnr = buch.buchnr AND bwr2.schlagwortnr = sw2.schlagwortnr;