具有业务逻辑的复杂SQL查询

时间:2014-12-04 16:56:13

标签: sql join mysql-logic

我遇到了一个复杂的查询,我需要实现一些业务逻辑。下面是我所拥有的表格(我已经省略了可读性的额外列)

Team - TeamID, TeamName
TeamMember - MemberID, TeamID, MemberName
Question - QuestionID, CategoryID, DifficultyLevelID, Question
Category - CategoryID, CategoryName
DifficultyLevel - DifficultyLevelID, DifficultyLevelName
QuestionOffered - QuestionOfferedID, QuestionID, OfferedTo

现在,业务逻辑是,我有10个类别(如科学,历史,地理等)和3个难度级别(即简单,中等,硬)。每个类别和难度级别都有5个问题。

因此每个类别3 x 5 = 15个问题(5 Easy,5 Medium,5 Hard)。总计15 x 10(类别)= 150个问题。

现在我希望每次用户进来时,我都会检查我是否已经提供(可以从QuestionsOffered表中跟踪)该类别和难度级别下的所有5个问题,如果是,那么我赢了&# 39;再次显示类别和难度级别。

所以,假设我第一次来到这里,我将获得所有类别,然后选择一个类别,我将获得所有难度级别。现在我选择Easy然后继续。所以在每个类别下,我可以选择一个特定的难度级别5次,之后我会在完成所有5次轻松后获得类别和其他难度级别(即中等和难度)。

因此,通过这种方式,如果我完成同一类别下的所有5个简单,5个中等和5个难题,则该类别本身不会显示。

当然,我可以在编程中实现这个逻辑来填充类别,但最终会产生大量的代码。

那么有没有办法在SQL中检查这个业务逻辑?这样我就可以填充数据了吗?

1 个答案:

答案 0 :(得分:0)

将你的问题,类别和关卡加在一起,然后加入已经提供的问题。过滤问题提供表中的任何字段为空,您将有一个未答复的问题列表?也许?