【问题标题】:SQL : map column several times to itemSQL:将列多次映射到项目
【发布时间】:2021-02-28 14:12:10
【问题描述】:

我是 SQL 新手,正在尝试从映射的 id 中检索所有名称 |命名表。

结构如下:

我的目标是返回包含所有列的完整项目,但 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 中获取所有值

【问题讨论】:

    标签: sql sql-server inner-join


    【解决方案1】:

    这是一个糟糕的数据模型,但您可以使用 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 表,每个帖子和每个标签都有一行。

    【讨论】:

    • 是的,稍微修复一下结构听起来不错
    猜你喜欢
    • 1970-01-01
    • 2020-09-29
    • 2020-12-03
    • 2016-01-20
    • 1970-01-01
    • 2020-06-29
    • 2021-01-22
    • 1970-01-01
    • 2016-06-21
    相关资源
    最近更新 更多