I have three simple tables:

Items

```
ItemID (int, PK)
ItemName (nvarchar50)
ItemCost (int)

```

Tags

```
TagID (int, PK)
TagName (nvarchar50)

```

ItemTags

```
ItemID (int, FK->Items)
TagID (int, FK->Tags)

```

How can I write a query to the effect of 'find all items tagged with tag1 and tag2, but not tag3'?

Do I need to use a completely different schema?