Hulp bij een SQL-vraag met behulp van een mogelijke Group By-component?

Ik ben een tijdje in .NET geweest, maar ben nog steeds vrij instapniveau als het gaat om de wereld van SQL. Ik heb wat hulp nodig bij het samenstellen van wat ik dacht dat een eenvoudige vraag zou moeten zijn.

Ik heb een associatieve entiteit waarmee klanten in één tabel meerdere telefoonnummers kunnen hebben (opgeslagen in een aparte tabel). Het verkrijgen van de nummers die horen bij die specifieke klant is eenvoudig. Ik heb echter een zoekopdracht nodig om alleen de klanten te tonen die een telefoonnummer delen.

I thought perhaps this could be done using a GROUP BY clause and specifying a HAVING Count(*) > 1 (or something), but it's not getting me the results I'm looking for...

Noodzaak om dit te doen omdat het een schending is van de bedrijfslogica die we implementeren in onze BLL en moet worden aangepakt.

1
Post wat je hebt geprobeerd, welke resultaten dat je hebben gegeven en waarom die resultaten verkeerd zijn.
toegevoegd de auteur Mark Byers, de bron

1 antwoord

Ik zou me aansluiten bij de telefoonnummers en weer terug naar de klant, op die manier kun je weergeven wie overeenkomt met wie en via welk -nummer:

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
2
toegevoegd