sql查询查找至少有两种帐户的用户

时间:2012-11-18 00:23:38

标签: mysql sql sqlplus

我是关系型sql的新手。我试图找出一个查询来返回拥有多种帐户类型的客户的姓名。

客户:

+------------+--------------+ 
| cid        | Name         | 
+------------+--------------+ 
| 1          | Bob          |
| 2          | John         | 
| 3          | Jane         | 
+------------+--------------+ 

帐户:

+------------+--------------+ 
| aid        | type         | 
+------------+--------------+ 
| 1          | Checking     |
| 2          | Saving       | 
| 3          | CD           | 
+------------+--------------+ 

交易:

+------------+--------------+--------------+ 
| tid        | cid          | aid          | 
+------------+--------------+--------------+ 
| 1          | 1            | 1            | 
| 2          | 2            | 1            | 
| 3          | 1            | 2            | 
| 4          | 2            | 3            | 
| 5          | 3            | 1            | 
+------------+--------------+--------------+

使用这些表,查询应返回Bob和John。我在如何编写这样的查询时遇到了一些麻烦。更具体地说,如何计算客户拥有的帐户数量,如何在不向表格添加新列的情况下比较帐户是否不同?

1 个答案:

答案 0 :(得分:1)

好的,这似乎适用于我的测试数据结构的SQL Fiddle。尝试使用您的真实数据结构,看看它是否能满足您的需求。

SELECT name FROM customers c WHERE EXISTS(
  SELECT DISTINCT aid FROM transactions
  WHERE cid = c.cid
  HAVING COUNT(DISTINCT aid)>1
)