My tables are as follows:****** Object: Table [dbo].[Results] Script Date: 22/01/2008 18:01:09 ******/CREATE TABLE [dbo].[Results] ( [ResultId] [int] IDENTITY (1, 1) NOT NULL , [TournamentId] [int] NOT NULL , [UserId] [int] NOT NULL , [Points] [int] NOT NULL , [Position] [int] NOT NULL , [Bonus1] [bit] NOT NULL , [Bonus2] [bit] NOT NULL , [Bonus3] [bit] NOT NULL , [Created] [smalldatetime] NOT NULL , [Updated] [smalldatetime] NULL ) ON [PRIMARY]GO/****** Object: Table [dbo].[Tournaments] Script Date: 22/01/2008 18:01:09 ******/CREATE TABLE [dbo].[Tournaments] ( [TournamentId] [int] IDENTITY (1001, 1) NOT NULL , [LeagueId] [int] NOT NULL , [VenueId] [int] NOT NULL , [Date] [smalldatetime] NULL , [Status] [int] NOT NULL ) ON [PRIMARY]GO/****** Object: Table [dbo].[Venues] Script Date: 22/01/2008 18:01:09 ******/CREATE TABLE [dbo].[Venues] ( [VenueId] [int] IDENTITY (1, 1) NOT NULL , [Name] [varchar] (100) COLLATE Latin1_General_CI_AS NULL , [RegionId] [int] NOT NULL , [AddressId] [int] NULL , [ImageFilename] [varchar] (50) COLLATE Latin1_General_CI_AS NULL , [TournamentDay] [int] NOT NULL , [TournamentTime] [char] (5) COLLATE Latin1_General_CI_AS NULL , [Website] [varchar] (100) COLLATE Latin1_General_CI_AS NULL , [Longitude] [varchar] (20) COLLATE Latin1_General_CI_AS NULL , [Latitude] [varchar] (20) COLLATE Latin1_General_CI_AS NULL , [Status] [int] NOT NULL , [Agent] [int] NULL , [SalesExecutive] [int] NULL , [Created] [smalldatetime] NOT NULL , [CreatedBy] [int] NULL , [Updated] [smalldatetime] NULL , [UpdatedBy] [int] NULL ) ON [PRIMARY]GO
My query I want to return the following for each Sales Executive:1. Total Venues from a given period(based on 'created' field2. Total Tournaments (based on tournament id field)3. Total Results from tournamentsHere is my query but for some reason I am getting the same values for the tournaments and results:SELECT v.SalesExecutive, COUNT(t.TournamentId) AS Tournaments, COUNT(r.ResultId) AS ResultsFROM dbo.Tournaments t INNER JOIN dbo.Results r ON t.TournamentId = r.TournamentId RIGHT OUTER JOIN dbo.Venues v ON t.VenueId = v.VenueIdWHERE (t.Status = 2) AND (v.Created BETWEEN CONVERT(DATETIME, '2007-12-01 00:00:00', 102) AND CONVERT(DATETIME, '2008-01-31 00:00:00', 102)) AND (t.[Date] BETWEEN CONVERT(DATETIME, '2007-12-01 00:00:00', 102) AND CONVERT(DATETIME, '2008-01-31 00:00:00', 102))GROUP BY v.SalesExecutiveHAVING (v.SalesExecutive <> - 1)
Thanks in advancewww.creativenrg.co.uk