我已经在.NET工作了一段时间,但是当谈到SQL世界时,我仍然是一个很好的入门级别。我需要一些帮助来构建我认为应该是简单查询的内容。
我有一个关联实体,允许一个表中的客户拥有多个电话号码(存储在单独的表中)。获取与该特定客户相关的数字很简单。但是,我需要一个查询才能显示共享电话号码的客户。
我想也许这可以使用GROUP BY子句并指定HAVING Count(*)>来完成。 1(或其他),但它没有得到我正在寻找的结果......
需要这样做,因为它违反了我们在BLL中实施的业务逻辑,需要加以解决。
答案 0 :(得分: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