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

# Cross join effects

I have a real dilemma. I have two counts and totals I'd like to show on a single row, using the following three tables:

```SalesPerson:
EmpNo LastName
1    Jones
2    Harris
3    Smith

HardwareSales:
idno empno amount
1    1    1,200
2    2    2,600
3    2    1,400
4    2    1,000
5    3    3,200
6    3    2,800

SoftwareSales:
idno empno amount
1    1     100
2    1     200
3    2     500
4    3     200
5    3     175
6    3      25
7    3     300```

I would like to get this result:

```EmpNo Count of  Sum of    Count of  Sum of
Hardware  Hardware  Software  Software
1      1       1,200       2        300
2      3       5,000       1        500
3      2       6,000       4        700```

```EmpNo Count of  Sum of    Count of  Sum of
Hardware  Hardware  Software  Software
1      2       2,400       2        300
2      3       5,000       3      1,500
3      8      24,000       8      1,400```

This is my SQL statement:

```SELECT DISTINCTROW SalesPerson.empno,
Count(HardwareSales.amount) AS [Count Of Hardware],
Sum(HardwareSales.amount) AS [Sum Of Hardware],
Count(SoftwareSales.amount) AS [Count Of Software],
Sum(SoftwareSales.amount) AS [Sum Of Software]
FROM (SalesPerson INNER JOIN SoftwareSales
ON SalesPerson.empno = SoftwareSales.empno)
INNER JOIN HardwareSales
ON SalesPerson.empno = HardwareSales.empno
GROUP BY SalesPerson.empno,
SalesPerson.lastname, SalesPerson.firstname,
HardwareSales.empno, SoftwareSales.empno;```

Thanks for the splendid example.

You have two unrelated one-to-many relationships, from employee to software, and from employee to hardware, being combined in a query. The important point is that while multiple software rows are related to an employee, and multiple hardware rows are related to an employee, the individual software and hardware rows are unrelated to each other.

The effects of joining them are easy to see in your example. The software and hardware counts for each employee are multiplied together. The sums are inflated by a factor equal to the number of unrelated rows. What has happened is that every single software row for an employee is matched with every possible hardware row for that employee. Thus, for each employee you get a "Cartesian product" of software and hardware rows, resulting in cross join effects.

Here's one way to solve the problem:

```select SalesPerson.empno
, Hcount as [Count Of Hardware]
, Hsum   as [Sum Of Hardware]
, Scount as [Count Of Software]
, Ssum   as [Sum Of Software]
from (
SalesPerson
inner
join (
select empno
, count(amount) as Scount
, sum(amount)   as Ssum
from SoftwareSales
group by empno
) as S
on SalesPerson.empno = S.empno
)
inner
join (
select empno
, count(amount) as Hcount
, sum(amount)   as Hsum
from HardwareSales
group by empno
) as H
on SalesPerson.empno = H.empno```

This is Microsoft Access, right? When you paste this query into the SQL View window and save it, Access may replace the inner parentheses around the subqueries with square brackets and a period, but the query should still continue to work. Alternatively, you could save each of the subqueries as a query, then refer to them in the main query's FROM clause, in effect using the saved queries the way other databases use VIEWs.

The secret is to join each employee to only one row for software totals and only one row for hardware totals.

#### Start the conversation

Send me notifications when other members comment.

## SearchDataManagement

• ### Ascend boosts enterprise data governance with data lineage

The new capabilities of Ascend Govern bring data lineage and enterprise data governance as well as the ability to try and figure ...

• ### The business benefits of enterprise data governance and MDM

Data leaders from prominent large organizations provide insights into data governance best practices and benefits, at ...

• ### How data governance and data management work together

Data governance is an important part of data management. These recommendations will help build a strong complementary ...

• ### SAS analytics platform benefiting from AI investment

Fueled by SAS' investment in AI and augmented intelligence features, the long-established vendor strengthened its BI platform ...

• ### Trends and top use cases for streaming data analytics

As more enterprises adopt real-time analytics, new infrastructure and best practices are appearing. Here are some trending ...

• ### COVID-19 effect on analytics software development an unknown

With COVID-19 forcing software engineers to work remotely rather than together in teams, they'll need to find new ways of ...

## SearchSAP

• ### SAP S/4HANA migration: Critical advice for moving off ECC

With the end of SAP ECC support looming in 2027, organizations must make some tough decisions. Here's a look at your choices.

• ### How to pick a SuccessFactors implementation partner

Selecting the right SuccessFactors implementation partner is a critical step in the journey to deploying the system. Check out ...

• ### 6 critical steps of a successful SAP S/4HANA migration

A successful S/4HANA project starts with knowing why your organization should even make the move, then nailing down whether S/4 ...

## SearchSQLServer

• ### SQL Server database design best practices and tips for DBAs

Good database design is a must to meet processing needs in SQL Server systems. In a webinar, consultant Koen Verbeeck offered ...

• ### SQL Server in Azure database choices and what they offer users

SQL Server databases can be moved to the Azure cloud in several different ways. Here's what you'll get from each of the options ...

• ### Using a LEFT OUTER JOIN vs. RIGHT OUTER JOIN in SQL

In this book excerpt, you'll learn LEFT OUTER JOIN vs. RIGHT OUTER JOIN techniques and find various examples for creating SQL ...

## TheServerSide.com

• ### 5 Jenkins alternatives for Java developers

In need of an alternative to Jenkins as part of a CI/CD environment? Consider options from Atlassian, GitLab, Spinnaker, ...

• ### Work from home tips from distributed development teams during COVID-19

The distributed dev community often works remotely. Pick up these approaches, such as an asynchronous schedule and video ...

• ### How to refactor the God object antipattern

Loose coupling can inadvertently create a God object problem in an object-oriented software system. Here's how to get rid of the ...

## SearchDataCenter

• ### Tech giants aim supercomputers, clouds at finding a COVID-19 cure

The new COVID-19 HPC consortium comprised of tech giants, national labs and academia are using supercomputers and clouds to speed...

• ### Top vendor SDDC certification programs for admins

If you decide to grow your knowledge of software-defined data center technologies, VMware, Nuage Networks and Microsoft offer ...

• ### Build up your knowledge of leaf-spine network technology

As organizations deal with challenges of single tree path networks, many admins are considering leaf-spine architectures. Learn ...

## SearchContentManagement

• ### Vendors offer free remote work technology for telecommuting

It's more than a marketing ploy: Cloud technology vendors, seeing their own issues enabling remote work, extend paid products to ...

• ### How businesses should deal with enterprise search issues

Enterprise search issues frequently complicate user experience with ECM systems. While users may face many problems, they also ...

• ### Box, Dropbox shore up clouds; Box-Microsoft integrations go live

Online document collaboration platforms Box and Dropbox shore up cloud bandwidth, security and customer support as remote work ...

## SearchHRSoftware

• ### Farmers Insurance piloting human-like VR training

VR training has become a best practice at Farmers Insurance Exchange. Its claims adjusters are being exposed to more scenarios ...

• ### Virtual hiring, avoiding layoffs part of HR's pandemic response

In the face of a pandemic, many firms are trying to avoid layoffs and even hire. They are using virtual tools, including testing ...

• ### Transformational HR in 2020: 7 strategies for agility and tech mastery

CHROs and their teams must grow their people, business and technology skills as they focus on curating the employee experience. ...

Close