1
我有一个已经存在的SQL请求,加入8个表格,我需要添加3个表格来向我的数据添加兼容信息。如何在多个表上执行sql条件连接?
对于这个任务,我们可以忽略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
具有特定TypeRequest
的Request
,请将Request id
添加到数据行。
我写了“太包容性的”,因为与查询额外的'左join'返回多个结果(尽管它不应该改变)。而且'3 left join'感觉很难看,因为_I感觉它应该是在'request'上的'left join'和''subject'和'typeRequest'上的'inner join'。 – Kraz
如果您有三个共有1个字段的表,您只能从所有三个表中选择结果和2个连接。也许你的表格过度标准化。 – b3ko
我用你在回答中提出的建议,它似乎有效。谢谢。 (我也不能更改数据库结构)。 – Kraz