首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Pl/SQL - oracle 9i

Pl/SQL - oracle 9i
EN

Stack Overflow用户
提问于 2011-06-01 06:46:39
回答 2查看 95关注 0票数 1

我们有餐桌顾客和餐车。

customer表定义为: cust#,transaction# car表定义为: transaction#,car model#

car model#可以是日产、丰田或本田。

我们需要找出的是,有多少不同的客户购买了本田,但没有购买日产。汽车model#可以有多个记录,因为客户可以购买2-3辆本田或日产。事务编号是car表中的主键。

做这件事最具成本效益的方法是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-06-01 07:04:56

试试这个:

代码语言:javascript
运行
复制
SELECT COUNT(DISTINCT cust#)
  FROM customer a, car b
 WHERE a.transaction# = b.transaction#
   AND b.model# = 'HONDA'
     AND NOT EXISTS 
     (
        SELECT 1
          FROM customer c, car d
         WHERE c.transaction# = d.transaction#
             AND d.model# = 'NISSAN'
             AND c.cust# = a.cust#
     )
票数 1
EN

Stack Overflow用户

发布于 2011-06-01 07:18:30

代码语言:javascript
运行
复制
SELECT COUNT(DISTINCT cust.CUST#) AS COUNT FROM CUSTOMER cust INNER JOIN CAR car ON  
cust.TRANS#=car.TRANS# WHERE CAR_MODEL#='HONDA'
AND NOT EXISTS 
(SELECT COUNT(1) FROM CUSTOMER inner_cust INNER JOIN CAR inner_car ON 
inner_cust.TRANS#=inner_car.TRANS# 
AND inner_cust.CUST#=inner_car.CUST# WHERE inner_car.CAR_MODEL#='NISSAN')
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6194410

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档