SQL : 多次将列映射到项目
SQL : map column several times to item
我是 SQL 的新手,正在尝试从映射的 ID 中检索所有名称 |姓名 table.
结构如下:
我的目标是 return 一个包含所有列的完整项目,但 id 列被替换为实际值。
我可以使用此代码检索 1 个标签(只有标签有问题,因为这是唯一未 1:1 映射的列):
select Posts.Title as Title, Tags.Name as Tag1
from Posts
inner join Tags on Posts.Tag1ID = Tags.TagID
但我不知道如何从 Tag1ID、Tag2ID、Tag3ID 和 Tag4ID 中获取所有值
这是一个糟糕的数据模型,但您可以使用 join
。 . .和 join
一次又一次:
select p.Title as Title, t1.Name as Tag1, t2.Name as Tag2,
. . .
from Posts p left join
tags t1
on p.Tag1ID = t1.TagID left join
Posts p left join
tags t2
on p.Tag1ID = t2.TagID left join
. . .
您需要为每个标签列重复此操作。
如果可以的话,你应该修复数据模型!更好的数据模型应该有一个 PostTags
table,每个 post 和每个标签一行。
我是 SQL 的新手,正在尝试从映射的 ID 中检索所有名称 |姓名 table.
结构如下:
我的目标是 return 一个包含所有列的完整项目,但 id 列被替换为实际值。
我可以使用此代码检索 1 个标签(只有标签有问题,因为这是唯一未 1:1 映射的列):
select Posts.Title as Title, Tags.Name as Tag1
from Posts
inner join Tags on Posts.Tag1ID = Tags.TagID
但我不知道如何从 Tag1ID、Tag2ID、Tag3ID 和 Tag4ID 中获取所有值
这是一个糟糕的数据模型,但您可以使用 join
。 . .和 join
一次又一次:
select p.Title as Title, t1.Name as Tag1, t2.Name as Tag2,
. . .
from Posts p left join
tags t1
on p.Tag1ID = t1.TagID left join
Posts p left join
tags t2
on p.Tag1ID = t2.TagID left join
. . .
您需要为每个标签列重复此操作。
如果可以的话,你应该修复数据模型!更好的数据模型应该有一个 PostTags
table,每个 post 和每个标签一行。