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