对于措辞不佳的标题,我深表歉意:(
我有三张桌子。
- 表马拉:文章及其描述。
- 表 MARC:文章到站点分类。
- 表 T001W:站点及其位置。
我正在尝试在 MARC 中查找缺少的记录,这些记录证明文章未分类到站点。有关基本示例,请参见附表。
在这里,有2篇文章(A和B(和4个网站(1,2,3和4(。我正在寻找可以根据 MARA 中的文章和 MARC 中的站点搜索 MARC 并告诉我不存在的内容的查询。此示例中的正确答案是 A-4、B-1 和 B-4。
或者,我可以在查询的列表中提供 MARA 和 T001W 值以避免任何联接。MARA 将有 ~1,500 个值,T001W 将有 2,000 个值。
<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;
border-color: black;
}
.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;
border-color: black;
}
.tg .tg-amwm {
font-weight: bold;
text-align: center;
vertical-align: top
}
.tg .tg-8m24 {
background-color: #000000;
text-align: left;
vertical-align: top
}
.tg .tg-8zwo {
font-style: italic;
text-align: left;
vertical-align: top
}
.tg .tg-0lax {
text-align: left;
vertical-align: top
}
</style>
<table class="tg">
<tr>
<th class="tg-amwm" colspan="2">MARA</th>
<th class="tg-8m24"></th>
<th class="tg-amwm" colspan="2">MARC</th>
<th class="tg-8m24"></th>
<th class="tg-amwm" colspan="2">T001W</th>
</tr>
<tr>
<td class="tg-8zwo">Article</td>
<td class="tg-8zwo">Desc</td>
<td class="tg-8m24"></td>
<td class="tg-8zwo">Article</td>
<td class="tg-8zwo">Site</td>
<td class="tg-8m24"></td>
<td class="tg-8zwo">Site</td>
<td class="tg-8zwo">Continent</td>
</tr>
<tr>
<td class="tg-0lax">A</td>
<td class="tg-0lax">Spoon</td>
<td class="tg-8m24"></td>
<td class="tg-0lax">A</td>
<td class="tg-0lax">1</td>
<td class="tg-8m24"></td>
<td class="tg-0lax">1</td>
<td class="tg-0lax">NA</td>
</tr>
<tr>
<td class="tg-0lax">B</td>
<td class="tg-0lax">Fork</td>
<td class="tg-8m24"></td>
<td class="tg-0lax">A</td>
<td class="tg-0lax">2</td>
<td class="tg-8m24"></td>
<td class="tg-0lax">2</td>
<td class="tg-0lax">SA</td>
</tr>
<tr>
<td class="tg-0lax"></td>
<td class="tg-0lax"></td>
<td class="tg-8m24"></td>
<td class="tg-0lax">A</td>
<td class="tg-0lax">3</td>
<td class="tg-8m24"></td>
<td class="tg-0lax">3</td>
<td class="tg-0lax">EU</td>
</tr>
<tr>
<td class="tg-0lax"></td>
<td class="tg-0lax"></td>
<td class="tg-8m24"></td>
<td class="tg-0lax">B</td>
<td class="tg-0lax">2</td>
<td class="tg-8m24"></td>
<td class="tg-0lax">4</td>
<td class="tg-0lax">AS</td>
</tr>
<tr>
<td class="tg-0lax"></td>
<td class="tg-0lax"></td>
<td class="tg-8m24"></td>
<td class="tg-0lax">B</td>
<td class="tg-0lax">3</td>
<td class="tg-8m24"></td>
<td class="tg-0lax"></td>
<td class="tg-0lax"></td>
</tr>
</table>
编辑:添加文本表和示例数据。
表 马拉
文章 |描述
A |勺
子 B |叉
表 MARC
文章 |站点
A | 1
A | 2 A | 3
B | 2
B | 3
表 T001W
站点 |德克。
1 |北美
2 |SA
3 |欧盟
4 |如
如果我理解正确,您可以使用cross join
生成网站和文章的所有组合,然后删除存在的:
select s.site, a.article
from sites s cross join
articles a left join
marc m
on m.article = a.article and
m.site = s.site
where m.article is null;
我重命名了表,以便查询逻辑更易于遵循。