1

我在 .NET 中已经有一段时间了,但在 SQL 世界中我仍然是入门级的。我需要一些帮助来构建我认为应该是一个简单的查询。

我有一个关联实体,它允许一个表中的客户拥有多个电话号码(存储在单独的表中)。获取与该特定客户相关的号码很简单。但是,我需要一个查询来仅显示共享电话号码的客户。

我想也许这可以使用 GROUP BY 子句并指定 HAVING Count(*) > 1 (或其他东西)来完成,但这并没有让我得到我正在寻找的结果......

需要这样做,因为它违反了我们在 BLL 中实现的业务逻辑,需要解决。

4

1 回答 1

2

我会通过电话号码加入并再次返回给客户,这样您就可以显示与谁匹配以及通过哪个号码:

SELECT c1.*, c2.*, p1.phone_number
FROM customer c1
JOIN customer_phone_number p1 ON p1.customer_id = c1.id
JOIN customer_phone_number p2 
    ON p1.phone_number = p2.phone_number and p2.customer_id != p1.customer_id 
JOIN customer c2 ON c2.id = p2.customer_id
于 2012-06-24T00:50:50.367 回答