我正在使用oracle数据库,我有两个表。
表A 主键= productid 表B 参考表A的产品主键= imageid
流量:
每个产品应该有4个图像存储在表B中(强制性)
问题:
有些产品只有2张或有时3张或有时只有1张图片 尽管基于代码级别,4图像规则是强制性的。
问题:
如何计算表b中包含图像的唯一产品数量?因为,如果我这样做
select count(*) from tableA join tableB on tableA.productid = tableB.productid
结果是双倍的,因为它是一对多...因为,一个产品有很多图像。
所以,假设productID = 12345
在4 images
中有table B
,一旦我运行查询,结果就是4,当我只想得到1 ......那么怎么样?
答案 0 :(得分:1)
执行存在的子查询
select count(*) from tableA
where exists (select 1 from tableB where tableA.productid = tableB.productid)
答案 1 :(得分:1)
SELECT Count(DISTINCT TableA.productid)
FROM TableA
JOIN TableB ON TableA.productid = TableB.productid;
答案 2 :(得分:0)
SELECT COUNT(*) FROM
(
select A.productId from tableA A join tableB B on A.productid = B.productid
GROUP BY A.productId
HAVING COUNT(B.imageId) > 1 ) T