无法指望子查询并获得正确的结果。Oracle SQL
我有两张桌子: 广告(ano,报纸,pno) 物业(pno、街道、郊区、邮政、首张清单、类型、peid) 我的目标是列出至少在两份不同报纸上刊登广告的房产 目前我尝试了以下两个查询:无法指望子查询并获得正确的结果。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
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