Solved

Need a SQL subquery to compile data

Posted on 2009-05-09
6
230 Views
Last Modified: 2012-05-06
Im very new to subqueries.
I have 2 queries that I need to combine.
I have a database with User Tables, Activity Tables, Activity Registration Tables,  and Activity Attempt Tables

  I need to find the Activity REgistrations for a given user and the Attempt info for each registration.

I have two separate queries that find the info,  but I need to combine them so I can return all the values in a single row (which makes actions on the row easier)

Right now I have a dtalist that returns the list of registrations with a button in a datalist.  Clicking the button calls the 2nd query to find the Attempt data for the selected activity. But that process requires too much user interaction.  My final result needs to be a hyperlink in the datalist that contains the attempt data for the activity.




//This query returns the user's list of Activities

SELECT     TOP (5) TBL_TMX_Activity.ActivityName, TBL_TMX_Activity.Activity_PK

FROM         TBL_TMX_Registration INNER JOIN

                      TBL_TMX_Activity ON TBL_TMX_Registration.ActivityFK = TBL_TMX_Activity.Activity_PK INNER JOIN

                      tblEmp INNER JOIN

                      iwc_Usr ON tblEmp.Emp_PK = iwc_Usr.Usr_EmpFK ON TBL_TMX_Registration.EmpFK = tblEmp.Emp_PK

WHERE     (iwc_Usr.Usr_Name = N'matt.fox') AND (TBL_TMX_Registration.Status <> 4) AND (TBL_TMX_Activity.CBTLaunchMtdFK IS NOT NULL)

ORDER BY TBL_TMX_Registration.LstUpd DESC, TBL_TMX_Activity.Activity_PK DESC
 
 

//This query returns the Attempt data for the user's activity
 

SELECT     TBL_TMX_Attempt.Attempt_PK, TBL_TMX_ActCBT.PackageId

FROM         iwc_Usr INNER JOIN

                      tblEmp ON iwc_Usr.Usr_EmpFK = tblEmp.Emp_PK INNER JOIN

                      TBL_TMX_Activity INNER JOIN

                      TBL_TMX_Attempt ON TBL_TMX_Activity.Activity_PK = TBL_TMX_Attempt.ActivityFK INNER JOIN

                      TBL_TMX_ActCBT ON TBL_TMX_Attempt.ActivityFK = TBL_TMX_ActCBT.ActivityFK ON tblEmp.Emp_PK = TBL_TMX_Attempt.EmpFK

WHERE     (iwc_Usr.Usr_Name = N'matt.fox') AND (TBL_TMX_Activity.Activity_PK = 6609)
 

//Can these two queries be combined into 1 that returns a list of activities and the attempt data for each activity?

Open in new window

0
Comment
Question by:mattfox77
  • 3
  • 2
6 Comments
 
LVL 2

Expert Comment

by:krishrr
ID: 24345221
Try to include any common field in both the queries (if exists) and make a inner join with that field, which will produce the desired result.

If two queries have no related fields, then try it with Union query.
0
 
LVL 75

Accepted Solution

by:
Anthony Perkins earned 500 total points
ID: 24346015
Something like this perhaps:

SELECT      TOP 5
            a.ActivityName,
            a.Activity_PK,
            t.Attempt_PK,
            c.PackageId
FROM      TBL_TMX_Registration r
            INNER JOIN TBL_TMX_Activity a ON r.ActivityFK = a.Activity_PK
            INNER JOIN tblEmp e ON r.EmpFK = e.Emp_PK
            INNER JOIN iwc_Usr u ON e.Emp_PK = u.Usr_EmpFK
        INNER JOIN TBL_TMX_Attempt t ON a.Activity_PK = t.ActivityFK And e.Emp_PK = t.EmpFK
            INNER JOIN TBL_TMX_ActCBT c ON t.ActivityFK = c.ActivityFK
WHERE      u.Usr_Name = N'matt.fox'
            AND e.Status <> 4
            AND a.CBTLaunchMtdFK IS NOT NULL
ORDER BY
            r.LstUpd DESC,
            a.Activity_PK DESC
0
 
LVL 75

Assisted Solution

by:Anthony Perkins
Anthony Perkins earned 500 total points
ID: 24346034
On second thoughts this might be more accurate:

SELECT      ra.ActivityName,
            ra.Activity_PK,
            t.Attempt_PK,
            c.PackageId
FROM      (Select      TOP 5
                        r.EmpFK,
                        a.ActivityName,
                        a.Activity_PK
            From      TBL_TMX_Registration r
                        INNER JOIN TBL_TMX_Activity a ON r.ActivityFK = a.Activity_PK
            Where      a.CBTLaunchMtdFK IS NOT NULL
            ORDER BY
                        r.LstUpd DESC,
                        a.Activity_PK DESC) ra
            INNER JOIN tblEmp e ON ra.EmpFK = e.Emp_PK
            INNER JOIN iwc_Usr u ON e.Emp_PK = u.Usr_EmpFK
        INNER JOIN TBL_TMX_Attempt t ON a.Activity_PK = t.ActivityFK And e.Emp_PK = t.EmpFK
            INNER JOIN TBL_TMX_ActCBT c ON t.ActivityFK = c.ActivityFK
WHERE      u.Usr_Name = N'matt.fox'
            AND e.Status <> 4
0
How to run any project with ease

Manage projects of all sizes how you want. Great for personal to-do lists, project milestones, team priorities and launch plans.
- Combine task lists, docs, spreadsheets, and chat in one
- View and edit from mobile/offline
- Cut down on emails

 
LVL 1

Author Comment

by:mattfox77
ID: 24350718
acperkins

Thanks for the input.  I tried your second post first,  but got errors.  I couldn't really understand the second post so I used your first post to create this query,  which worked.

Does it look accurate,  or is there something Im missing that could cause false results?
On My test  DB seems to be working fine...

select top 5 a.ActivityName, a.activity_pk, t.attempt_PK, c.PackageID

from

TBL_TMX_Activity a INNER JOIN TBL_TMX_Registration r on a.Activity_PK = r.ActivityFK

inner join tblEmp e on e.Emp_PK = r.EmpFK

inner join iwc_Usr u on u.Usr_EmpFK = e.Emp_PK

inner join TBL_TMX_Attempt t on t.ActivityFK = a.Activity_PK and t.EMpFK = e.Emp_PK

inner join TBL_TMX_ActCBT c on c.ActivityFK = t.ActivityFK

Where u.Usr_Name = N'matt.fox'

and r.Status <> 4

and a.CBTLaunchMtdFK is not null

order by r.LstUpd DESC, a.Activity_PK DESC

Open in new window

0
 
LVL 75

Expert Comment

by:Anthony Perkins
ID: 24351024
My concern was that you would only get 5 rows of data.  It sounded like you wanted all the activity for the first 5 rows of data.  But if that works for yoy, great!
0
 
LVL 1

Author Closing Comment

by:mattfox77
ID: 31579818
Providing 2 approaches really nailed it and saved frustration in applying and debugging. Thanks!
0

Featured Post

Complete VMware vSphere® ESX(i) & Hyper-V Backup

Capture your entire system, including the host, with patented disk imaging integrated with VMware VADP / Microsoft VSS and RCT. RTOs is as low as 15 seconds with Acronis Active Restore™. You can enjoy unlimited P2V/V2V migrations from any source (even from a different hypervisor)

Join & Write a Comment

Suggested Solutions

Title # Comments Views Activity
Modifying SQL 2008/2012 PARTITIONS 3 46
SQL Server DeDupe Table 3 29
SQL HELP 2 74
Compare data between two databases 16 82
There are some very powerful Data Management Views (DMV's) introduced with SQL 2005. The two in particular that we are going to discuss are sys.dm_db_index_usage_stats and sys.dm_db_index_operational_stats.   Recently, I was involved in a discu…
by Mark Wills Attending one of Rob Farley's seminars the other day, I heard the phrase "The Accidental DBA" and fell in love with it. It got me thinking about the plight of the newcomer to SQL Server...  So if you are the accidental DBA, or, simp…
Illustrator's Shape Builder tool will let you combine shapes visually and interactively. This video shows the Mac version, but the tool works the same way in Windows. To follow along with this video, you can draw your own shapes or download the file…
This tutorial demonstrates a quick way of adding group price to multiple Magento products.

708 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

Need Help in Real-Time?

Connect with top rated Experts

12 Experts available now in Live!

Get 1:1 Help Now