无法指望子查询并获得正确的结果。Oracle SQL

无法指望子查询并获得正确的结果。Oracle SQL,sql,oracle,oracle11g,Sql,Oracle,Oracle11g,我有两张桌子: 广告(ano,报纸,pno) 物业(pno、街道、郊区、邮政、首张清单、类型、peid) 我的目标是列出至少在两份不同报纸上刊登广告的房产 目前我尝试了以下两个查询: SELECT P.pno, P.suburb, P.type FROM (SELECT pno, newspaper FROM (SELECT DISTINCT pno, newspaper FROM advertisement) GROUP BY pn

我有两张桌子:

广告(ano,报纸,pno)

物业(pno、街道、郊区、邮政、首张清单、类型、peid)

我的目标是列出至少在两份不同报纸上刊登广告的房产

目前我尝试了以下两个查询:

SELECT P.pno, P.suburb, P.type
FROM (SELECT pno, newspaper
      FROM (SELECT DISTINCT pno, newspaper 
            FROM advertisement)
            GROUP BY pno, newspaper) SQ1, property P, advertisement A
WHERE P.pno = A.pno AND SQ1.pno = P.pno
GROUP BY P.pno, P.suburb, P.type
HAVING COUNT(SQ1.pno) > 1
;

它给出了以下结果:

所以我的问题是他们没有考虑在同一份报纸上刊登两次广告的房产。他们两人都不止一次地归还广告中的每一处房产。这里的rogue属性是pno=40。它被列了两次,但都在同一份报纸上

当我运行子查询时,它会给出没有重复项的pno

示例:

这是广告台

这是子查询的结果


因此,目标是只计算子查询中存在多次的pno,此时大于1。我在这个问题上花的时间比我愿意承认的要多。任何帮助都将不胜感激。

您可以使用下面的查询,该查询使用带distinct子句的聚合-

SELECT P.pno, P.street, P.suburb, P.post, P.first_list, P.type, P.peid
  FROM Advertisement AD
  JOIN Property P ON P.pno = AD.pno
 GROUP BY P.pno, P.street, P.suburb, P.post, P.first_list, P.type, P.peid
HAVING COUNT(DISTINCT AD.newspaper) > 1

这工作做得很好。非常感谢你!我不知道为什么我不想数报纸而不是pno。@Pythonnewb,不客气。你真的尝试过以关键字
FROM
开头的查询吗?在Oracle SQL中?那没有出错吗?或者这些不是您运行的查询,但可能只是其中的一部分?请澄清。@mathguy在代码``上有问题,select语句没有显示出来。这不是真的。请点击文章底部“询问…之前”标记旁边的“编辑…之前”链接。如果你点击“编辑”链接,你可以看到文章的历史记录。在早期版本的文章中没有“select”子句,您只是在上次编辑中添加了它。请不要在这里歪曲事实。@mathguy相信你想要的,但原始文档有:``选择。。。。。。我不相信我想要的,我相信我看到的。你是否按照我的建议回顾了你的帖子历史?你看到你在哪里声称什么了吗?或者你是说历史是错误的,也许有人改变了你在历史上的位置?(注意:任何人,甚至网站经理都不能编辑。)
SELECT P.pno, P.street, P.suburb, P.post, P.first_list, P.type, P.peid
  FROM Advertisement AD
  JOIN Property P ON P.pno = AD.pno
 GROUP BY P.pno, P.street, P.suburb, P.post, P.first_list, P.type, P.peid
HAVING COUNT(DISTINCT AD.newspaper) > 1