problem with joined tables

  • I posted yesterday thinking a SELECT Distinct would solve my problem but it didn't. I have a stored procedure that is used to grab data from 4 tables that I need to join.

    The 1st table Application holds a job applicant's name and some other data

    The 2nd table Jobs holds the Job name and test type

    The 3rd table Locations holds the locations

    Then there is a foreign key many to many table Application_Locations that holds the applicants UserID and a LocationID this table may have multiple rows for the same applicant with different locations in each row.

    When the procedure is run I want all the data that I am requesting from the Application table, and all the data that I am requesting from the Jobs table but only the 1st returned result of the Join on the Locations and Application_Locations table. What do I need to do to correct this so that I only display 1 row for each UserID no matter how many locations thay may have applied to. (You will notice that there are some IF statements so only the 2nd and 4th queries in the sproc are the ones that apply )

    Here is the SPROC that is currently in place but is displaying a row for each location.

    CREATE PROCEDURE sp_AdminListApplicants

    @LocationID int,

    @FolderID smallint,

    @JobID int,

    @SortOrder char(1)

    AS

    IF @JobID <> 9999

    BEGIN

    IF @LocationID <> 9999

    BEGIN

    SELECT

    A.UserID,

    A.Completed,

    A.FolderID,

    A.AppDateTimeStart,

    A.ResumeFileName,

    A.FirstName,

    A.LastName,

    A.PrescreenScore,

    A.JobID,

    A.ViewPre,

    A.ViewApp,

    A.ViewReport,

    A.ViewResume,

    J.JobTitle,

    J.TestType,

    L.BranchAbbreviation,

    AL.LocationID

    FROM

    Locations L

    INNER JOIN Application_Locations AL ON AL.LocationID = L.LocationID

    INNER JOIN Application A ON AL.UserID = A.UserID

    INNER JOIN Jobs J ON J.JobID = A.JobID

    WHERE

    AL.LocationID= @LocationID

    AND A.FolderID= @FolderID

    AND A.JobID = @JobID

    ORDER BY

    CASE

    WHEN @SortOrder = '4' THEN A.AppDateTimeStart

    END DESC,

    CASE

    WHEN @SortOrder = '6' THEN A.PreScreenScore

    END DESC,

    CASE

    WHEN @SortOrder = '2' THEN A.LastName

    END DESC,

    CASE

    WHEN @SortOrder = '5' THEN A.PreScreenScore

    END ASC,

    CASE

    WHEN @SortOrder = '3' THEN A.AppDateTimeStart

    END ASC,

    CASE

    WHEN @SortOrder = '1' THEN A.LastName

    END ASC

    END

    ELSE

    BEGIN

    SELECT

    A.UserID,

    A.Completed,

    A.FolderID,

    A.AppDateTimeStart,

    A.ResumeFileName,

    A.FirstName,

    A.LastName,

    A.PrescreenScore,

    A.JobID,

    A.ViewPre,

    A.ViewApp,

    A.ViewReport,

    A.ViewResume,

    J.JobTitle,

    J.TestType,

    L.BranchAbbreviation,

    AL.LocationID

    FROM

    Locations L

    INNER JOIN Application_Locations AL ON AL.LocationID = L.LocationID

    INNER JOIN Application A ON AL.UserID = A.UserID

    INNER JOIN Jobs J ON J.JobID = A.JobID

    WHERE

    A.FolderID= @FolderID

    AND A.JobID = @JobID

    ORDER BY

    CASE

    WHEN @SortOrder = '4' THEN A.AppDateTimeStart

    END DESC,

    CASE

    WHEN @SortOrder = '6' THEN A.PreScreenScore

    END DESC,

    CASE

    WHEN @SortOrder = '2' THEN A.LastName

    END DESC,

    CASE

    WHEN @SortOrder = '5' THEN A.PreScreenScore

    END ASC,

    CASE

    WHEN @SortOrder = '3' THEN A.AppDateTimeStart

    END ASC,

    CASE

    WHEN @SortOrder = '1' THEN A.LastName

    END ASC

    END

    END

    ELSE

    BEGIN

    IF @LocationID <> 9999

    BEGIN

    SELECT

    A.UserID,

    A.Completed,

    A.FolderID,

    A.AppDateTimeStart,

    A.ResumeFileName,

    A.FirstName,

    A.LastName,

    A.PrescreenScore,

    A.JobID,

    A.ViewPre,

    A.ViewApp,

    A.ViewReport,

    A.ViewResume,

    J.JobTitle,

    J.TestType,

    L.BranchAbbreviation,

    AL.LocationID

    FROM

    Locations L

    INNER JOIN Application_Locations AL ON AL.LocationID = L.LocationID

    INNER JOIN Application A ON AL.UserID = A.UserID

    INNER JOIN Jobs J ON J.JobID = A.JobID

    WHERE

    AL.LocationID= @LocationID

    AND A.FolderID= @FolderID

    ORDER BY

    CASE

    WHEN @SortOrder = '4' THEN A.AppDateTimeStart

    END DESC,

    CASE

    WHEN @SortOrder = '6' THEN A.PreScreenScore

    END DESC,

    CASE

    WHEN @SortOrder = '2' THEN A.LastName

    END DESC,

    CASE

    WHEN @SortOrder = '5' THEN A.PreScreenScore

    END ASC,

    CASE

    WHEN @SortOrder = '3' THEN A.AppDateTimeStart

    END ASC,

    CASE

    WHEN @SortOrder = '1' THEN A.LastName

    END ASC

    END

    ELSE

    BEGIN

    SELECT

    A.UserID,

    A.Completed,

    A.FolderID,

    A.AppDateTimeStart,

    A.ResumeFileName,

    A.FirstName,

    A.LastName,

    A.PrescreenScore,

    A.JobID,

    A.ViewPre,

    A.ViewApp,

    A.ViewReport,

    A.ViewResume,

    J.JobTitle,

    J.TestType,

    L.BranchAbbreviation,

    AL.LocationID

    FROM

    Locations L

    INNER JOIN Application_Locations AL ON AL.LocationID = L.LocationID

    INNER JOIN Application A ON AL.UserID = A.UserID

    INNER JOIN Jobs J ON J.JobID = A.JobID

    WHERE

    A.FolderID= @FolderID

    ORDER BY

    CASE

    WHEN @SortOrder = '4' THEN A.AppDateTimeStart

    END DESC,

    CASE

    WHEN @SortOrder = '6' THEN A.PreScreenScore

    END DESC,

    CASE

    WHEN @SortOrder = '2' THEN A.LastName

    END DESC,

    CASE

    WHEN @SortOrder = '5' THEN A.PreScreenScore

    END ASC,

    CASE

    WHEN @SortOrder = '3' THEN A.AppDateTimeStart

    END ASC,

    CASE

    WHEN @SortOrder = '1' THEN A.LastName

    END ASC

    END

    END

    GO

  • issue resolved

Viewing 2 posts - 1 through 1 (of 1 total)

You must be logged in to reply to this topic. Login to reply