0

我正在使用 oracle 数据库,我有两个表。

表 A 主键 = productid

表 B 引用表 A 的 productid

主键 = imageid

流动:

每个产品应在表 B 中存储 4 张图片(强制)

问题:

有一些产品只有 2 个或有时 3 个或有时 1 个图像,尽管 4 个图像规则基于代码级别是强制性的。

问题:

如何计算在表 b 中有图像的产品的唯一数量?因为,如果我这样做

select count(*) from tableA join tableB on tableA.productid = tableB.productid

结果是双倍的,因为它是一对多的……例如,一个产品有很多图像。所以让我们说productID = 12345has 4 imagesin table B,一旦我运行我的查询,结果是 4 ,当我只想得到 1 ......那怎么办?

4

3 回答 3

1

使用 where exists 进行子查询

select count(*) from tableA 
where exists (select 1 from tableB where tableA.productid = tableB.productid)
于 2013-10-29T02:39:53.190 回答
1
SELECT Count(DISTINCT TableA.productid)
FROM   TableA 
JOIN   TableB ON TableA.productid = TableB.productid;
于 2013-10-29T02:45:28.677 回答
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
于 2013-10-29T02:40:32.987 回答