我正在构建一个数据库,该数据库将包含标记,并使用了 'toxi' 模式,其中我有 3 个表:
Items: Item, ItemID, more fields
Tags: TagName, TagID, more fields
TagMap: TagID, ItemID
我正在尝试构建一个查询,该查询将列出所有项目及其标签,其中许多项目可能没有标签。我找不到可以同时执行这两种操作的查询。
以下查询按名称获取带有标签的项目,但只会提取具有标签的项目。
SELECT Items.Item, Tags.Tag
FROM Items INNER JOIN
(Tags INNER JOIN TagMap ON Tags.ID = TagMap.TagId)
ON Items.ID = TagMap.ItemId;
如果它们已被标记,则以下查询会为我获取所有项目及其 TagID,但我似乎无法进入在单个查询中将这些 TagID 转换为 TagNames 的下一步。
SELECT [Items].Item, [TagMap].TagId
FROM Items LEFT JOIN TagMap ON [Items].ID=TagMap.ItemId;
MSDN说“外部联接可以嵌套在多表联接中的内部联接中,但内部联接不能嵌套在外部联接中”,但我找不到任何嵌套两个不引发错误的联接的方法。据我所知,我需要 LEFT JOIN 才能出现在 Items 上。
我正在使用 Access 在概念数据库上构建我的证明,因为它已经安装在我的机器上。我可能会在某个时候切换到 SQL Server。