我是关系型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。我在如何编写这样的查询时遇到了一些麻烦。更具体地说,如何计算客户拥有的帐户数量,如何在不向表格添加新列的情况下比较帐户是否不同?
答案 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
)