Q
Problem solve Get help with specific problems with your technologies, process and projects.

# Many-to-many links that aren't there

I have People linked to Roles with three tables: People, Links, Roles. People has PersonName and PersonID columns,...

Roles has RoleID, and RoleName columns, and Links has PersonID and RoleID columns. Each person can have zero or more roles, each role can have zero or more people. How do I select (distinct) all names that are NOT linked to a specified role?

I'm not totally sure whether you want to list people that are not linked to one specific role, or people that are not linked to any role at all. So let's answer both questions. Here's some sample data:

```People
PersonID  PersonName
24      Homer
26      Marge
31      Bart
33      Lisa
36      Maggie
45      Apu

Roles

RoleID  RoleName
101   Technician
103   Homemaker
107   Student
111   Teacher

PersonID  RoleID
24       101
26       103
31       107
33       107```

Let's try to find people without a specific role, say Student. If we already know the RoleID, 107, then the query is:

```select PersonName
from People
left outer

This query works by specifying the RoleID condition in the join, and then testing for no match. To see why this works, let's ignore the WHERE clause for a moment, and look at the rows produced by the left outer join. Remember, the only possible joins are to Links rows with Roleid 107:

```People    People      Links     Links
PersonID  PersonName  PersonID  RoleID
24      Homer       null      null
26      Marge       null      null
31      Bart        31        107
33      Lisa        33        107
36      Maggie      null      null```

The WHERE clause can now be applied, to select those people without a match to a RoleID 107 Links row. Homer, Marge, and Maggie are not Students.

The correct results are not produced if the Links.Roleid = 107 condition is moved from the ON clause to the WHERE clause. You can try this on your own if you wish.

Now, if the specific RoleID is not known, but the RoleName is, then just simply extend the left outer join to the third table:

```select PersonName
from People
left outer
left outer
join Roles
and                Roles.RoleName = 'Student'
where Roles.RoleID is null```

Again, the technique here is to specify the restricting condition in an ON clause, rather than in the WHERE clause.

Finally, if you want people with no role at all, then use the first left outer join query, joining only People and Links, without any Roleid condition in the ON clause, again selecting unmatched rows in the WHERE clause. This will give you Apu.

By the way, you may have assumed from the title of this answer, Many-to-many links that aren't there, that the solution might involve a NOT EXISTS subquery. Yes, it's possible to do it that way:

```select PersonName
from People
where not exists
( select 1
where PersonID = People.PersonID
and Roleid = 107 )```

However, I prefer the left outer join syntax.

This was last published in October 2002

#### Have a question for an expert?

Get answers from a TechTarget expert on whatever's puzzling you.

You will be able to add details on the next page.

#### Start the conversation

Send me notifications when other members comment.

## SearchDataManagement

• ### Focus, scope and spotting opportunity are key to role of CDO

Chief data officers and experts see the CDO role as changing to a more strategic orientation -- especially finding key ...

• ### Good data quality for machine learning is an analytics must

As companies add machine learning applications, they need to really understand -- and be able to improve -- their data. That's ...

• ### Chief data officer role: Searching for consensus

The chief data officer role is about many things -- regulations, innovation, AI and more. Consultant Randy Bean discussed the ...

• ### Data analytics in government efforts lack structure

Data analytics in government agencies lack organization, focusing on immediate problems instead of attacking underlying causes ...

• ### A complete guide to buying data discovery software

Data discovery software turns data into business insights, and it's vital for GDPR compliance. This guide outlines the products ...

• ### Rising demand for business analytics education programs

Colleges and universities are increasingly offering business analytics degrees. The graduates can help build IT and business ...

## SearchSAP

• ### On-premises, hosted most popular S/4HANA deployment options

The pure cloud -- SaaS -- version of SAP's newest ERP, S/4HANA Cloud, lacks some of the same features of the on-premises version....

• ### S/4HANA public cloud version can get lost in cloud confusion

The 'true' public cloud is the streamlined SaaS version of on-premises S/4. But private cloud options are often conflated with ...

• ### SAP S/4HANA migration: What you need to know

There's a lot to consider when contemplating a move to SAP S/4HANA, and this essential guide provides a starting point, including...

## SearchSQLServer

• ### Six sample databases for SQL Server and how to find them

SQL Server sample databases are useful for test and dev, but they can be difficult to parse. Use this SQL database sample ...

• ### A quick tutorial on SQL Server maintenance plans

SQL Server maintenance plans get a bad rap, but for DBAs who need a simple way to maintain databases, Microsoft's built-in tools ...

• ### Proposed Microsoft-GitHub buy confirms open source role in cloud

The looming Microsoft-GitHub pairing confirms the company's rebirth as an open source friend. Data tools on the Azure cloud are ...

## TheServerSide.com

• ### Attain Jenkins Git integration with a GitHub pull request

This Jenkins Git integration tutorial demonstrates how to create a freestyle build job that performs a Jenkins GitHub pull ...

• ### Financial firms, vendors push self-service software delivery

Self-service DevOps automation appeals to enterprises that must push out new code as they adapt to changing requirements.

• ### IT projects and software teams need to include Agile people

Not every idea deserves equal weight in a software development project, but Agile people know that garnering input from a wide ...

## SearchDataCenter

• ### Four top open source SIEM tools you should know

Open source SIEM software offers organizations a way to test capabilities and augment existing functionalities for analytics and ...

• ### Rackspace colocation program hosts users' legacy servers

Rackspace now has a managed colocation program that it hopes to upsell its customers with additional services, once their servers...

Broadcom has acquired CA Technologies in a move some believe is largely financially motivated, while others see an opportunity ...

## SearchContentManagement

• ### Augmented reality devices speed van repairs at Volkswagen U.K.

Augmented reality headsets for garage mechanics speed collaboration between repair shops and experts in the home office to solve ...

• ### Endpoint security tool fueled OpenText's Guidance Software acquisition

Endpoint security was the primary draw for OpenText's Guidance Software acquisition. But plans to improve e-discovery and data ...

• ### Digital transformation benefits follow a not-so-fast track

Choosing among the many digital transformation strategies in the content management sphere is not easy but can pay off when ...

## SearchHRSoftware

• ### Cost, doubt about tech hold back AI for HR investment

AI technology will improve the productivity of HR departments by eliminating many routine and transactional processes. But what ...

• ### Automated recruiting solves Groupon's sourcing talent woes

Building a talent pool through effective sourcing is a major effort by Groupon. It is using a recruiting automation tool to find ...

• ### New HR tools for hourly workers, employee retention announced

This week's news roundup includes an HR tool designed just for hourly workers, a new offering from Limeade to help with talent ...

Close