SQL - optymalne zapytanie
Mam bazę danych o takim schemacie:

Dostępną dla testów pod adresem:
http://blueman.vipower.pl/phpmyadmin/
login: blueman_tagdb
hasło: yytcjo.0
Do wybierania plików z jednym tagiem można skorzystać z tego zapytania:
SELECT f.* FROM tags t LEFT JOIN f_has_t ft ON t.id=ft.tag_id LEFT JOIN files f ON ft.file_id=f.id WHERE t.word LIKE '%testari%'
Dla ww. plików można pobrać tagi jakie są używane w tej grupie plików:
SELECT t.word,count(t.word) co FROM tags t, f_has_t ft WHERE ft.tag_id=t.id AND ft.file_id IN (31901,31902,31903,31904,31905,31906,31907,31908,31909,31910,48996,49688,49689,49690,49691, 49692,49693,49694,49695,49696,49697,87132) GROUP BY t.word ORDER BY co DESC
W jaki sposób teraz z bazy danych jak najmniejszą ilością zapytań (i jak najoptymalniejszych) "wyłowić" wszystkie pliki, które mają tagi X, Y i Z (czyli każdy z plików ma mieć te 3 tagi)