2012-11-10 6 views
1

J'ai 2 tables, book et temp_table. Il y a 2 colonnes dans le livre: book_id and tag_id, et seulement 1 colonne dans temp_table (tag_id).Requête Sql avec joindre 2 tables

J'ai besoin faire la sélection utilisée règle suivante:

  • Si livre a toutes les balises de temporary_table, il sera en résultat.

Par exemple, il y a 3 livres.

First one has tag_id: 1,2,3,4. 
    Second - 1,3,4 
    Third - 1,2,3,5 

Et temporary_table contient tag_id: 1,3,4.

La sélection nécessaire doit contenir les 1er et 2e livres. Le livre 3D ne doit pas être dans le jeu de résultats car il a tag_id = 5, ce qui n'est pas le cas dans temp_table.

+0

Si 3ème livre ne peut pas être le résultat parce qu'il a tag_id = 5, pourquoi le 1er livre devrait apparaître dans les résultats si elle a tag_id = 2, puisque temporary_table n'a pas tag_id = 2 ? – BernaMariano

Répondre

1
select book_id 
from book b 
inner join temp_table t on t.tag_id = tag_id 
group by book_id 
having count(distinct tag_id) = (select count(distinct tag_id) from temp_table) 
+0

Merci. Ça marche. – Innik