Solved

Help with a SQL Query

Posted on 2013-05-10
6
298 Views
Last Modified: 2013-05-10
My tables look like this:

TableA
-------------
Emp_id    |Name
 11           | John
 18           | Karen
 21           | Tim


TableB
--------------
Visit_id   | City
1             |  Moscow
2             |  Tokyo
3             |  Frankfurt
4             |  Miami


TableC
-------------
Emp_id   | Visit_id
11           |  2  
21           |  1  
11           |  2
18           |  4  
18           |  3
18           |  2


I need a query that will take the tables above and do this:

Emp_id    |  Name   |  Moscow   |  Tokyo   |  Frankfurt   |  Miami  
11            |   John    |                  |       X      |                    |
18            |  Karen   |                 |       X      |        X          |       X
21            |  Tim      |        X       |               |                    |
Total:       |              |        1       |       2      |          1        |       1

Note: I don't mind having to hardcode the cities into the query (in fact, that might be a plus because I'll want control over the order of the city columns).  Also, the 'X's don't have to be X's...they can be replaced by 1's (or whatever).  Finally, the totals-line in the example is not absolutely necessary (I'm exporting this to Excel and the users could add that themselves).

Appreciate it.
0
Comment
Question by:David L. Hansen
[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
  • 3
6 Comments
 
LVL 41

Expert Comment

by:Sharath
ID: 39157175
can you try this?
Transform count(TableB.City) as cnt
select TableA.Emp_id,TableA.Name
  from ((TableA 
  inner join TableC on TableA.Emp_id = TableC.Emp_id)
 inner join TableB on TableB.Visit_id = TableC.Visit_id)
 group by TableA.Emp_id,TableA.Name
pivot TableB.City;

Open in new window

0
 
LVL 15

Author Comment

by:David L. Hansen
ID: 39157205
That's amazing!  Thanks so much.  The points are yours.  
Could you give some pointers on how I can manipulate the order of the columns?
0
 
LVL 41

Expert Comment

by:Sharath
ID: 39157233
check if this helps.
Transform count(TableB.City) as cnt
select TableA.Emp_id,TableA.Name
  from ((TableA 
  inner join TableC on TableA.Emp_id = TableC.Emp_id)
 inner join TableB on TableB.Visit_id = TableC.Visit_id)
 where TableB.City IN ('Moscow','Tokyo','Frankfurt','Miami')
 group by TableA.Emp_id,TableA.Name
pivot TableB.City;

Open in new window

0
Instantly Create Instructional Tutorials

Contextual Guidance at the moment of need helps your employees adopt to new software or processes instantly. Boost knowledge retention and employee engagement step-by-step with one easy solution.

 
LVL 41

Accepted Solution

by:
Sharath earned 500 total points
ID: 39157235
sorry, this.
Transform count(TableB.City) as cnt
select TableA.Emp_id,TableA.Name
  from ((TableA 
  inner join TableC on TableA.Emp_id = TableC.Emp_id)
 inner join TableB on TableB.Visit_id = TableC.Visit_id)
 group by TableA.Emp_id,TableA.Name
pivot TableB.City IN ('Moscow','Tokyo','Frankfurt','Miami');

Open in new window

0
 
LVL 15

Author Comment

by:David L. Hansen
ID: 39157278
Very nice!
0
 
LVL 15

Author Comment

by:David L. Hansen
ID: 39157314
If you are still here Sharath I'm about to post another question about exporting this query into an excel spreadsheet.  I've got this working except that all the columns are the same width (a bit too narrow).

I'm using this code:
DoCmd.OutputTo acOutputQuery, "OptCouncilRpt", acFormatXLS, "C:\Temp\OptCouncilRpt" & Format(Date, "yyyymmdd") & ".xls"

Open in new window


Here is the link:
http://www.experts-exchange.com/Software/Office_Productivity/Office_Suites/MS_Office/Excel/Q_28124952.html
0

Featured Post

Creating Instructional Tutorials  

For Any Use & On Any Platform

Contextual Guidance at the moment of need helps your employees/users adopt software o& achieve even the most complex tasks instantly. Boost knowledge retention, software adoption & employee engagement with easy solution.

Question has a verified solution.

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

Phishing attempts can come in all forms, shapes and sizes. No matter how familiar you think you are with them, always remember to take extra precaution when opening an email with attachments or links.
Access custom database properties are useful for storing miscellaneous bits of information in a format that persists through database closing and reopening.  This article shows how to create and use them.
With Secure Portal Encryption, the recipient is sent a link to their email address directing them to the email laundry delivery page. From there, the recipient will be required to enter a user name and password to enter the page. Once the recipient …
Add bar graphs to Access queries using Unicode block characters. Graphs appear on every record in the color you want. Give life to numbers. Hopes this gives you ideas on visualizing your data in new ways ~ Create a calculated field in a query: …

717 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