sql查询,需要plsql吗?

时间:2014-08-19 00:05:34

标签: sql oracle plsql

我有三个表,客户,帐户和订单。

客户可以拥有多个订单,因此订单具有customer_id外键。

客户可以拥有多个帐户,但只有一个帐户才能拥有客户,因此该帐户具有customer_id外键。

表帐户有一个名为defaulter的属性,可以是TRUE或FALSE。

希望进行以下查询:

  • 所有客户订单都有两个违约帐户。

可以用SQL完成还是需要PLSQL?

谢谢

1 个答案:

答案 0 :(得分:2)

不需要PL / SQL。可以使用简单的SQL DQL查询来完成此查询。

无论哪种,

  1. 将客户加入帐户两次,寻找符合“违规帐户”标准的不同帐户(针对同一客户),或

  2. 将客户加入帐户一次并使用GROUP BY(在客户上)HAVING COUNT> = 2,其中符合“违规帐户”条件,或

  3. 将客户加入帐户,客户为GROUP,并在符合COUNT(CASE ..)的“违约帐户”条件时应用合计COUNT。使用外部查询选择COUNT> = 2的时间,或将聚合计数移动到WHERE子句中。

  4. 如果需要找到“正好两个”(或另一个数字),后两种方法更灵活,HAVING COUNT可能是最惯用的。