我有一个已经存在的SQL请求,它连接了8个表的togethers,我需要添加3个mores表来为我的数据添加一个兼性信息。
对于此任务,我们可以忽略6个表(捆绑在other_tables
中):
红色框中的部分是我要添加的部分。我只想添加尊重一些条件的request
。如果没有找到,我仍然需要我的人,但Request
列中没有数据。
到目前为止,我尝试了这一点,但是多个left join
似乎很丑陋且过于包容。
Select [...], request.Id
From [Action] inner join [other tables on ...] inner join
Person on Action.PersonId = Person.Id left JOIN
request as r on r.PersonId = Person.Id left JOIN
Subject as s on s.SubjectId = r.SubjectId left JOIN
TypeRequest tr on tr.IDSujet = s.SubjectId
Where
([already existing conditions]) and typeRequest = 'MOVE' (?)
再次重新说明我想要的内容:根据某些过滤器(在其他表上)获取所有actions
,同时获取它们所链接的person
。如果person
具有特定Request
的{{1}},请将TypeRequest
添加到数据行。
答案 0 :(得分:1)
上面的查询是否有效? "看起来丑陋而且过于包容"有点模糊。 你得到你想要的结果吗? 你也可以将where子句的一部分移动到连接中,如下所示:
Select [...], request.Id
From [Action] inner join [other tables on ...] inner join
Person on Action.PersonId = Person.Id left JOIN
request as r on r.PersonId = Person.Id left JOIN
Subject as s on s.SubjectId = r.SubjectId left JOIN
TypeRequest tr on tr.IDSujet = s.SubjectId **and typeRequest = 'MOVE'**
Where
([already existing conditions])