Want to win a PS4? Go Premium and enter to win our High-Tech Treats giveaway. Enter to Win

x
?
Solved

Count from two tables

Posted on 2008-06-22
9
Medium Priority
?
265 Views
Last Modified: 2012-06-27
Following situation:
Table 1:
Emp_ID
Emp_Name


Table 2:
Trans_ID
Emp_ID



Goal:
I need a report that displays ALL records from Table 1 and displays then number of related records in Table 2.
It should also show records from Table 1 if there are NO records in Table 2. (i.e. result would be Employee Nr. 712 = 0 transactions)

How do I do this in Crystal Reports?
DB is DB2.
Do I need to make queries for this, or can I count in the report itself?
How would the queries look like?

THANKS A LOT
0
Comment
Question by:olio
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 3
  • 2
  • 2
  • +2
9 Comments
 
LVL 28

Accepted Solution

by:
Bill Bach earned 800 total points
ID: 21840900
Two ways, depending on the capabilities of the SQL engine:

SELECT Emp_ID, Emp_Name, (SELECT COUNT(*) FROM Table2 WHERE Table2.Emp_ID = Table1.Emp_ID) FROM Table1

SELECT Emp_ID, Emp_Name, COUNT(*) FROM Table1
LEFT OUTER JOIN Table2 WHERE Table2.Emp_ID = Table1.Emp_ID
GROUP BY Emp_ID, Emp_Name
0
 
LVL 37

Assisted Solution

by:momi_sabag
momi_sabag earned 400 total points
ID: 21841009
i would use BillBach second suggestion
the first one is very bad in terms of perfromance if you have many rows
it's query needs a slight modification:

SELECT Emp_ID, Emp_Name,  sum(case t2.Emp_ID when null then 0 else 1 end)
FROM Table1 t1
LEFT OUTER JOIN Table2  t2 WHERE t2.Emp_ID = t1.Emp_ID
GROUP BY Emp_ID, Emp_Name

this is the correct
his query will return 1 if no rows exist for a given id, and not 0 as you requested
0
 
LVL 37

Assisted Solution

by:momi_sabag
momi_sabag earned 400 total points
ID: 21841012
if the above returns sytax error then try

SELECT Emp_ID, Emp_Name,  sum(case when t2.Emp_ID is null then 0 else 1 end)
FROM Table1 t1
LEFT OUTER JOIN Table2  t2 WHERE t2.Emp_ID = t1.Emp_ID
GROUP BY Emp_ID, Emp_Name

0
Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
LVL 1

Author Comment

by:olio
ID: 21841078
can i use this right in Crystal Report?
I have no direct access to DB2.
I can just create reports.
This is the difficulty in the organziational setup.
0
 
LVL 37

Expert Comment

by:momi_sabag
ID: 21841202
you can create a view in db2 that runs the abobe query and then you can just query that view as if it was a regular table
0
 
LVL 101

Expert Comment

by:mlmcc
ID: 21847723
Yes, you can add the SQL as a Crystal COMMAND when you set the database source.

If you prefer there are ways to get the counts in Crystal.

mlmcc
0
 
LVL 1

Author Comment

by:olio
ID: 21850450
I prefer to count in Crystal an not with an SQL command.
How would that be done mlmcc?
0
 
LVL 101

Assisted Solution

by:mlmcc
mlmcc earned 400 total points
ID: 21851342
The SQL command will be faster than in Crystal.

There are a couple of ways of counting in Crystal.
Easy way if you are counting all records
Right click a field in the report
Click INSERT --> SUMMARY
Choose type as COUNT
CHoose the appropriate group or report footer.

If you are trying to count distinct values use DISTINCT COUNT

You can also use a variable or running total to do the counting.
If summaries don't work I'll explain those.

mlmcc
0
 
LVL 35

Assisted Solution

by:James0628
James0628 earned 400 total points
ID: 21851610
As mlmcc said, you can use a Count summary.

 Of course you also need to get your tables in the report, and in case you're not sure how to do that ...

 Add the tables to the report, link Table1 to Table2 on Emp_ID (or whatever fields are appropriate) and make the link a LEFT OUTER JOIN, so that records from Table1 will be included even if there are no corresponding records in Table2.

 James
0

Featured Post

What does it mean to be "Always On"?

Is your cloud always on? With an Always On cloud you won't have to worry about downtime for maintenance or software application code updates, ensuring that your bottom line isn't affected.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Recently, Microsoft released a best-practice guide for securing Active Directory. It's a whopping 300+ pages long. Those of us tasked with securing our company’s databases and systems would, ideally, have time to devote to learning the ins and outs…
A Stored Procedure in Microsoft SQL Server is a powerful feature that it can be used to execute the Data Manipulation Language (DML) or Data Definition Language (DDL). Depending on business requirements, a single Stored Procedure can return differe…
In this video, Percona Director of Solution Engineering Jon Tobin discusses the function and features of Percona Server for MongoDB. How Percona can help Percona can help you determine if Percona Server for MongoDB is the right solution for …
In this video, Percona Solution Engineer Rick Golba discuss how (and why) you implement high availability in a database environment. To discuss how Percona Consulting can help with your design and architecture needs for your database and infrastr…
Suggested Courses

610 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question