I'm gettting a bit stumped here, I have the database laid out to get what most of I need accomplished... I can get a list of ALL of the logos that a product qualifies for, but not the most "covering" one(s).CREATE TABLE [dbo].[Hybrids] ( [HybridID] [int] NOT NULL , [InbredIDMale] [int] NULL , [InbredIDFemale] [int] NULL ) ON [PRIMARY]GOCREATE TABLE [dbo].[InbredTraits] ( [InbredID] [int] NOT NULL , [TraitID] [int] NOT NULL ) ON [PRIMARY]GOCREATE TABLE [dbo].[Inbreds] ( [InbredID] [int] NOT NULL , [InbredDesc] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ) ON [PRIMARY]GOCREATE TABLE [dbo].[LogoTraits] ( [LogoID] [int] NOT NULL , [TraitID] [int] NOT NULL ) ON [PRIMARY]GOCREATE TABLE [dbo].[Logos] ( [LogoID] [int] NOT NULL , [LogoDesc] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ) ON [PRIMARY]GOALTER TABLE [dbo].[Hybrids] ADD CONSTRAINT [PK_Hybrids] PRIMARY KEY CLUSTERED ( [HybridID] ) ON [PRIMARY] GOALTER TABLE [dbo].[InbredTraits] ADD CONSTRAINT [PK_InbredTraits] PRIMARY KEY CLUSTERED ( [InbredID], [TraitID] ) ON [PRIMARY] GOALTER TABLE [dbo].[Inbreds] ADD CONSTRAINT [PK_Inbreds] PRIMARY KEY CLUSTERED ( [InbredID] ) ON [PRIMARY] GOALTER TABLE [dbo].[LogoTraits] ADD CONSTRAINT [PK_LogoTraits] PRIMARY KEY CLUSTERED ( [LogoID], [TraitID] ) ON [PRIMARY] GOALTER TABLE [dbo].[Logos] ADD CONSTRAINT [PK_Logos] PRIMARY KEY CLUSTERED ( [LogoID] ) ON [PRIMARY] GOALTER TABLE [dbo].[Hybrids] ADD CONSTRAINT [FK_Hybrids_Inbreds] FOREIGN KEY ( [InbredIDMale] ) REFERENCES [dbo].[Inbreds] ( [InbredID] ), CONSTRAINT [FK_Hybrids_Inbreds1] FOREIGN KEY ( [InbredIDFemale] ) REFERENCES [dbo].[Inbreds] ( [InbredID] )GOALTER TABLE [dbo].[InbredTraits] ADD CONSTRAINT [FK_InbredTraits_Inbreds] FOREIGN KEY ( [InbredID] ) REFERENCES [dbo].[Inbreds] ( [InbredID] ) ON DELETE CASCADE , CONSTRAINT [FK_InbredTraits_Traits] FOREIGN KEY ( [TraitID] ) REFERENCES [dbo].[Traits] ( [TraitID] ) ON DELETE CASCADE GOALTER TABLE [dbo].[LogoTraits] ADD CONSTRAINT [FK_LogoTraits_Logos] FOREIGN KEY ( [LogoID] ) REFERENCES [dbo].[Logos] ( [LogoID] ) ON DELETE CASCADE , CONSTRAINT [FK_LogoTraits_Traits] FOREIGN KEY ( [TraitID] ) REFERENCES [dbo].[Traits] ( [TraitID] ) ON DELETE CASCADE INSERT INTO Logos (LogoID, LogoDesc) VALUES (1, 'CBLL')INSERT INTO Logos (LogoID, LogoDesc) VALUES (2, 'GT')INSERT INTO Logos (LogoID, LogoDesc) VALUES (3, 'RW')INSERT INTO Logos (LogoID, LogoDesc) VALUES (4, '4GT')INSERT INTO Logos (LogoID, LogoDesc) VALUES (5, 'GTRW')INSERT INTO Traits (TraitID, TraitDesc) VALUES (1, 'CB')INSERT INTO Traits (TraitID, TraitDesc) VALUES (2, 'LL')INSERT INTO Traits (TraitID, TraitDesc) VALUES (3, 'GA21')INSERT INTO Traits (TraitID, TraitDesc) VALUES (4, 'RW')INSERT INTO Inbreds (InbredID, InbredDesc) VALUES (1, 'Inbred1-CBLL')INSERT INTO Inbreds (InbredID, InbredDesc) VALUES (2, 'Inbred2-GTRW')INSERT INTO Inbreds (InbredID, InbredDesc) VALUES (3, 'Inbred3')INSERT INTO Inbreds (InbredID, InbredDesc) VALUES (4, 'Inbred4-RW')INSERT INTO LogoTraits (LogoID, TraitID) VALUES (1, 1)INSERT INTO LogoTraits (LogoID, TraitID) VALUES (1, 2)INSERT INTO LogoTraits (LogoID, TraitID) VALUES (2, 3)INSERT INTO LogoTraits (LogoID, TraitID) VALUES (3, 4)INSERT INTO LogoTraits (LogoID, TraitID) VALUES (4, 1)INSERT INTO LogoTraits (LogoID, TraitID) VALUES (4, 2)INSERT INTO LogoTraits (LogoID, TraitID) VALUES (4, 3)INSERT INTO LogoTraits (LogoID, TraitID) VALUES (4, 4)INSERT INTO LogoTraits (LogoID, TraitID) VALUES (5, 3)INSERT INTO LogoTraits (LogoID, TraitID) VALUES (5, 4)INSERT INTO InbredTraits (InbredID, TraitID) VALUES (1, 1)INSERT INTO InbredTraits (InbredID, TraitID) VALUES (1, 2)INSERT INTO InbredTraits (InbredID, TraitID) VALUES (2, 3)INSERT INTO InbredTraits (InbredID, TraitID) VALUES (2, 4)INSERT INTO InbredTraits (InbredID, TraitID) VALUES (4, 4)INSERT INTO Hybrids (HybridID, InbredIDMale, InbredIDFemale) VALUES (1, 1, 2)INSERT INTO Hybrids (HybridID, InbredIDMale, InbredIDFemale) VALUES (2, 1, 3)INSERT INTO Hybrids (HybridID, InbredIDMale, InbredIDFemale) VALUES (3, 3, 2)INSERT INTO Hybrids (HybridID, InbredIDMale, InbredIDFemale) VALUES (4, 4, 1)
In this example:SELECT DISTINCT h.HybridID, lt.LogoID, l.LogoDesc FROM Hybrids h INNER JOIN Inbreds i ON h.InbredIDMale = i.InbredID or h.InbredIDFemale = i.InbredID INNER JOIN InbredTraits it ON i.InbredID = it.InbredID INNER JOIN Traits t ON it.TraitID = t.TraitID INNER JOIN LogoTraits lt ON t.TraitID = lt.TraitID INNER JOIN ( SELECT LogoID, COUNT(TraitID) as TotalTraits FROM LogoTraits GROUP BY LogoID) tc ON lt.LogoID = tc.LogoID INNER JOIN Logos l ON lt.LogoID = l.LogoIDGROUP BY h.HybridID, lt.LogoID, tc.TotalTraits, l.LogoDescHAVING COUNT(lt.TraitID) = tc.TotalTraits
I only want to return:HybridID LogoID LogoDesc ----------- ----------- -------------------------------------------------- 1 4 3000GT2 1 CBLL3 5 RWGT4 1 CBLL4 3 RW
I'm pretty sure that I need to add another table to define the heirachy of the logos, What would you suggest? And how would I use it to get the necessary results ?Thanks Tony W