我在数据库中有2个部分。草稿和专辑。所以我们得到一张专辑的草稿。草稿有要求,后来创建了专辑。该专辑也有要求,但双方的要求是独立输入的。有些会改变,被删除,新的添加等等。我正在尝试进行查询以比较这些要求,当专辑被指定为来自特定的草稿时。
表结构如下所示:
草稿:ID,草稿字段
要求草案:ID,草案FK,要求类型FK
专辑:ID,Drafk FK(不需要立即,但只能审核草稿,如果这不是空的话),专辑字段
相册要求:ID,相册FK,要求类型FK
所以我想创建一个包含以下内容的查询:
草稿字段,相册字段,草稿要求,相册要求
基本上如果有10个要求,它会是这样的(请原谅代码,想要创建一个表,所以你真的可以看到):
<style type="text/css">
.tg {border-collapse:collapse;border-spacing:0;}
.tg td{font-family:Arial, sans-serif;font-size:14px;padding:10px 5px;border-style:solid;border-width:1px;overflow:hidden;word-break:normal;}
.tg th{font-family:Arial, sans-serif;font-size:14px;font-weight:normal;padding:10px 5px;border-style:solid;border-width:1px;overflow:hidden;word-break:normal;}
.tg .tg-yw4l{vertical-align:top}
</style>
<table class="tg">
<tr>
<th class="tg-yw4l">Draft Req</th>
<th class="tg-yw4l">Album Req</th>
</tr>
<tr>
<td class="tg-yw4l">R1</td>
<td class="tg-yw4l">R1</td>
</tr>
<tr>
<td class="tg-yw4l">R2</td>
<td class="tg-yw4l"></td>
</tr>
<tr>
<td class="tg-yw4l">R3</td>
<td class="tg-yw4l"></td>
</tr>
<tr>
<td class="tg-yw4l"></td>
<td class="tg-yw4l">R4</td>
</tr>
<tr>
<td class="tg-yw4l">R5</td>
<td class="tg-yw4l">R5</td>
</tr>
<tr>
<td class="tg-yw4l">R7</td>
<td class="tg-yw4l"></td>
</tr>
<tr>
<td class="tg-yw4l"></td>
<td class="tg-yw4l">R8</td>
</tr>
<tr>
<td class="tg-yw4l">R9</td>
<td class="tg-yw4l">R9</td>
</tr>
</table>
这是查询的第一部分,只有草稿和专辑的基本信息:
SELECT vw_CMP_Contacts.ContactNo, vw_CMP_Contacts.ContactName, vw_CMP_Matches.MatchNo, vw_CMP_Matches.MatchName,
tblContactDraft.txtOrganization, tblDraftStatus.txtDraftStatus, tblMAlbumStatus.txtAlbumStatus, tblAlbumType.txtAlbumType
FROM ((((vw_CMP_Matches
INNER JOIN (tblMAlbums INNER JOIN tblContactDraft ON tblMAlbums.FKContactDraft = tblContactDraft.ID) ON vw_CMP_Matches.CM_MID = tblMAlbums.FKMatch)
INNER JOIN tblDraftStatus ON tblContactDraft.FKDraftStatus = tblDraftStatus.ID)
INNER JOIN tblMAlbumStatus ON tblMAlbums.FKMAlbumStatus = tblMAlbumStatus.ID)
INNER JOIN tblAlbumType ON tblMAlbums.FKAlbumType = tblAlbumType.ID)
INNER JOIN vw_CMP_Contacts ON vw_CMP_Matches.ContactNo = vw_CMP_Contacts.ContactNo
接下来,我必须通过草案fk加入草案要求到tbldraftreqs,并按fk req类型加入req类型。我对tblalbumreqs中的专辑也有同感。
当我尝试加入这些时,我得不到任何结果,即使两者都有要求。问题是,我直接将草稿加入专辑,但后来我需要两个要求,并且要求他们一起或单独排队,这取决于他们是否都有相同的要求。
有意义吗?
我喜欢解决这个难题的任何指针!
答案 0 :(得分:0)
我明白了。我只能解释一个问题。如果唯一的评论是抱怨我没有足够的解释,我会继续自己研究。
无论如何,我希望这可以帮助其他人尝试做同样的加入。
SELECT mc.ID as mcid, mc.FKContactDraft as Draftid, rq.ID, rq.txtRequirementType, Draft.FKRequirementType AS DraftReq, cont.FKRequirementType AS MCReq
from tblMAlbums mc
full join tblReqType rq on 1=1
left join tblContactDraftRequirements Draft on mc.FKContactDraft = Draft.FKContactDraft and rq.ID = Draft.FKRequirementType
left join tblMAlbumRequirements cont on mc.ID = cont.FKMC and rq.ID = cont.FKRequirementType
where mc.FKContactDraft is not null