【问题标题】:SQL Query : Need to resolve below query logicSQL 查询:需要解析以下查询逻辑
【发布时间】:2017-02-03 06:00:25
【问题描述】:

我有两张桌子:

我想输出如下逻辑:

如果我输入任何类代码,那么我需要询问与该类代码相关的所有问题。 我还想要一个问题,它是那个问题的子问题。

也有可能单个类代码与多个问题匹配。您可以看到类代码 65005。在这种情况下,我们考虑上父问题。

如果我将通过 42908,那么我的输出如下:

如果您有任何疑问,请告诉我。

   SELECT * FROM QuestionMaster as a INNER JOIN [ClassCodeQuestionMapping] as b ON a.QuestionId = b.QuestionId 
    WHERE b.ClassCode=42908

我尝试了上面的查询,但我无法得到它的子问题。

谢谢。

【问题讨论】:

  • 你尝试过什么?
  • @Amit Bisht,我是 SQL 新手。所以我不知道如何获得该输出。
  • 从小处着手,如何为给定的类代码选择问题 ID?然后我们可以考虑抽出符合问题id的问题。
  • 如果有人给你查询,那么你不会离开太多。您可以尝试一下然后与我们分享吗?
  • 以上查询给了我类代码和相关问题。我需要一些递归数据。

标签: sql sql-server-2012


【解决方案1】:

提出一个最差的答案但没有 sql 编辑器来测试或编写查询,如果有人反对它会很高兴,但这可能会给出一些关于逻辑的提示

Select c.Question From (SELECT a.Question, a.ParentQuestionId
FROM QuestoinTable as a
INNER JOIN QuestoinClassMappingTable as b
ON a.QuestionId = b.QuestionId 
where b.ClassCode = 1234) as c 
INNER JOIN QuestoinTable as d
ON c.ParentQuestionId= d.QuestionId
UNION
Select d.Question From (SELECT a.Question, a.ParentQuestionId
FROM QuestoinTable as a
INNER JOIN QuestoinClassMappingTable as b
ON a.QuestionId = b.QuestionId 
where b.ClassCode = 1234) as c 
INNER JOIN QuestoinTable as d
ON c.ParentQuestionId= d.QuestionId

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-28
    • 1970-01-01
    • 1970-01-01
    • 2022-11-15
    • 1970-01-01
    • 1970-01-01
    • 2013-12-14
    相关资源
    最近更新 更多