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 和每个标签一行。