不能指望子查询并获得正确的 results.Oracle SQL
Cannot count on subquery and get proper results.Oracle SQL
我有两个table:
广告(ano,报纸,pno)
属性(pno, 街道, 郊区, post, first_list, 类型, peid)
我的目标是列出至少在 2 家不同报纸上刊登过广告的房产。
目前我已经尝试过这两个查询:
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
;
和
SELECT P.pno, P.suburb, P.type
FROM (SELECT DISTINCT pno
FROM advertisement
GROUP BY pno
HAVING COUNT(*) > 1) A1
LEFT JOIN property P ON P.pno = A1.pno;
结果如下:
所以我的查询的问题是他们没有考虑在同一份报纸上刊登过两次广告的房产。他们都 return 每个 属性 不止一次做广告。这里的流氓属性是pno=40,列了两次,不过是同一份报纸
当我 运行 子查询时,它给我没有重复的 pno。
示例:
这是广告table。
这是子查询的结果。
所以目标是只计算子查询中存在不止一次的pno,此时> 1。我在这个问题上花费的时间比我愿意承认的要多。任何帮助将不胜感激。
您可以使用以下查询,该查询使用带有不同子句的聚合 -
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
我有两个table:
广告(ano,报纸,pno)
属性(pno, 街道, 郊区, post, first_list, 类型, peid)
我的目标是列出至少在 2 家不同报纸上刊登过广告的房产。
目前我已经尝试过这两个查询:
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
;
和
SELECT P.pno, P.suburb, P.type
FROM (SELECT DISTINCT pno
FROM advertisement
GROUP BY pno
HAVING COUNT(*) > 1) A1
LEFT JOIN property P ON P.pno = A1.pno;
结果如下:
所以我的查询的问题是他们没有考虑在同一份报纸上刊登过两次广告的房产。他们都 return 每个 属性 不止一次做广告。这里的流氓属性是pno=40,列了两次,不过是同一份报纸
当我 运行 子查询时,它给我没有重复的 pno。
示例:
这是广告table。
这是子查询的结果。
所以目标是只计算子查询中存在不止一次的pno,此时> 1。我在这个问题上花费的时间比我愿意承认的要多。任何帮助将不胜感激。
您可以使用以下查询,该查询使用带有不同子句的聚合 -
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