Sql 如果ID=2,则基于连接表

Sql 如果ID=2,则基于连接表,sql,join,Sql,Join,我有3个表SP_注释,SP_步骤,SP_事务 SP_COMMENTS存储有关存储在SP_步骤中的步骤的注释 由于注释可以涉及多个步骤,因此我有一个SP_TRANSACTIONS表来跟踪所有这些步骤 这就是它们之间的关系: SP_COMMENTS.SP_COMMENTS_ID = SP_TRANSACTIONS.SP_TRANSACTIONS_COMMENT_ID SP_STEPS.SP_STEPS_ID = SP_TRANSACTIONS.SP_TRANSACTIONS_STEP_ID 我要

我有3个表
SP_注释
SP_步骤
SP_事务

SP_COMMENTS
存储有关存储在
SP_步骤中的步骤的注释

由于注释可以涉及多个步骤,因此我有一个
SP_TRANSACTIONS
表来跟踪所有这些步骤

这就是它们之间的关系:

SP_COMMENTS.SP_COMMENTS_ID = SP_TRANSACTIONS.SP_TRANSACTIONS_COMMENT_ID

SP_STEPS.SP_STEPS_ID = SP_TRANSACTIONS.SP_TRANSACTIONS_STEP_ID
我要做的是显示所有注释
,其中SP_STEPS.SP_STEPS_ID=2

我很难决定这应该是什么样的加入,非常感谢你的帮助-谢谢

SELECT columns
FROM SP_COMMENTS c
INNER JOIN SP_TRANSACTIONS t ON t.SP_TRANSACTIONS_COMMENT_ID=c.SP_COMMENTS_ID
WHERE t.SP_TRANSACTIONS_STEP_ID=2
此外,我对您的命名约定有一些说明:

  • 在表名前面加上“SP”是不好的,因为在数据库世界中,SP缩写还有另一个(更重要的)含义:存储过程。通过使用sp作为表前缀,您真的会让应用程序的未来维护人员感到困惑
  • 您的事务表的名称也很糟糕。此表是注释和步骤表之间的交叉点。它不是一个事务,这同样意味着数据库上下文中完全其他的东西
非常同意您在命名方面的额外观点。这是我在OPs问题上遇到的第一件事。我也同意,这是我们分析师的命名约定(不试图把任何人推到总线下),但是的,事务表名称是我要做的。谢谢你的快速回复。