0
我从第三方MS Access 2000文件格式获取数据在下面表格形式选择记录,其中多个项目匹配
- 论文和
- PaperTags 条件
下面是来自这些表格的示例数据。
Papers
表和样本数据
+----+----------+
| ID | PaperID |
+----+----------+
| 1 | 658 |
| 2 | 659 |
| 3 | 660 |
| 4 | 661 |
| 5 | 662 |
| 6 | 663 |
| 7 | 664 |
+----+----------+
PaperTags
表和样本数据
+----+----------+----------------------------------------+
| ID | PaperID | TagID |
+----+----------+----------------------------------------+
| 1 | 663 | 3 |
| 2 | 663 | 15 --Y |
| 3 | 663 | 17 |
| 4 | 663 | 18 --Y |
| 5 | 664 | 14 |
| 62 | 658 | 9 |
| 63 | 658 | 14 |
| 64 | 658 | 17 |
| 65 | 659 | 15 --Y |
| 66 | 659 | 17 |
| 67 | 659 | 18 --Y |
| 68 | 660 | 17 |
| 69 | 660 | 18 --N as it has only 18 and not 15 |
| 70 | 661 | 10 |
| 71 | 661 | 17 |
| 72 | 661 | 18 --N as it has only 18 and not 15 |
| 73 | 662 | 18 --N as it has only 18 and not 15 |
| 74 | 662 | 14 |
| 75 | 662 | 17 |
| 76 | 662 | 18 --N as it has only 18 and not 15 |
+----+----------+----------------------------------------+
现在我的最终用户将通过例如15和18我的目标的一个或多个TagIDs是找到所有的这些TagID具有全部的PaperID。在这些例子中,我需要返回663和659
我试过下面的查询,但如果数据有任何故障,那么它不起作用。例如,PaperID 662在表格中出现两次,具有相同的TagID,因此计数(PaperID)= 2的结果是正确的,并且最终会显示在我的结果中。
select Count(PaperID), PaperID from PaperTags
group by TagID, PaperID
having TagID = 15 or TagID = 18
and count(PaperID) = 2
,我试过其他查询是
select * from Papers
where Papers.PaperID
in
(
select PaperTags.PaperID from PaperTags
where (PaperTags.Tagid = 15 or PaperTags.Tagid = 18)
and PaperTags.PaperID = Papers.PaperID
)
我已经直通下面的文章,但因为我使用MSACCESS我不能使用这种方法。
Select records from a table where all other records with same foreign key have a certain value
我认为必须有更好的方式来进行筛选。任何帮助深表感谢。
@T基翁 - 在访问我收到错误“语法错误(缺少操作员)在查询表达式‘计数(DISTINCT内容识别)’”我测试了一个简单的查询与伯爵( DISTINCT ContentID),仍然得到了同样的错误,我认为MS Access不支持Count(DISTINCT ColumnName) – ndd
呃..嗯...我想... –
我已经更新了我的答案。 –