sarpay
5/2/2014 - 1:50 PM

[sql] select one child row from joined table

[sql] select one child row from joined table

-- USERS TABLE --
-- ID	Email				FirstName		LastName		Institution				Position	Phone		RegisterDateTime		UUID
-- 1	sarpay@gmail.com		Sarpay			Oner			The Tada and Shorts Company		Position 1	714 434 4344	2011-01-01 00:00:00.000		234234-23423-234
-- 2	mertay@gmail.com		Mertay			Oner			Mandarin Cantonese KungFu		Position 2	904 344 3434	2012-01-01 00:00:00.000		2344-4564-756756
-- 3	ozlemozmen5@yahoo.com.tr	Ozlem			Ozmen			Moraly Disturbed Individuals Lab	Position 3	989 434 3434	2013-01-01 00:00:00.000		5343-45345-34534
-- 4	sarpay@hotmail.com		sarpay			oner			lkjlkjlkj				ljklkjl		909 909 9090	2013-01-01 00:00:00.000		23232


-- TESTS TABLE --
-- ID	UserID		TimerID		TimerType	RunDateTime
-- 1	1		1		preset		2014-01-01 00:00:00.000
-- 2	1		2		custom		2014-01-02 00:00:00.000
-- 3	2		1		custom		2014-01-05 00:00:00.000
-- 4	*3		*2		*preset		2014-02-02 00:00:00.000
-- 5	*4		*2		*preset		2014-01-01 00:00:00.000
-- 6	*4		*2		*preset		2014-04-04 00:00:00.000


CREATE PROCEDURE [dbo].[getUsersByTimerId]

	@TimerID AS INT,
	@TimerType AS NVARCHAR(10)

AS

BEGIN

	SELECT
		[U].*,
		[viewTests].[RunDateTime] [TestDateTime]
		
	FROM 
		[Users] [U]
		INNER JOIN 
			(
				SELECT
					[T].[UserID],
					[T].[TimerID],
					MAX([T].[RunDateTime]) [RunDateTime]
				FROM
					[Tests] [T]
				WHERE
					[T].[TimerType] = @TimerType
					AND
					[T].[TimerID] = @TimerID
				GROUP BY
					[T].[UserID],
					[T].[TimerID]
			) AS [viewTests]
			ON [viewTests].[UserID] = [U].[ID]
			
		ORDER BY
			[viewTests].[RunDateTime] DESC
		
END


EXEC	@return_value = [dbo].[getUsersByTimerId]
		@TimerID = 2,
		@TimerType = N'preset'


-- QUERY RESULT --
-- ID	Email				FirstName	LastName	Institution				Position	Phone		RegisterDateTime		UUID			TestDateTime
-- 4	sarpay@hotmail.com		sarpay		oner		lkjlkjlkj				ljklkjl		909 909 9090	2013-01-01 00:00:00.000		23232			2014-04-04 00:00:00.000
-- 3	ozlemozmen5@yahoo.com.tr	Ozlem		Ozmen		Moraly Disturbed Individuals Lab	Position 3	989 434 3434	2013-01-01 00:00:00.000		5343-45345-34534	2014-02-02 00:00:00.000