Link to home
Start Free TrialLog in
Avatar of roblickley
roblickleyFlag for United Kingdom of Great Britain and Northern Ireland

asked on

SQL Code Help Please

I have the following query producing a recordset drawn from 2 tables.

SELECT
*
FROM
dbo.[qry_HorsesANDRidersAssociations]
Group By ClientID, HorseID, HorseName
UNION ALL
SELECT * FROM 
dbo.[qry_HorsesRidersHaveCompeted]
Group BY ClientID, HorseID, HorseName

Open in new window


It produces a list of horses that a rider "wants" to have associated on their account and also a list of horses they have actually ridden.

I have been asked for a facility to hide horses from a riders account - which is more applicable to the ones they have actually ridden rather than associated (as they can easily remove this association)

A new table tblHideHorse has been created with HorseID and ClientID along with HorseHideID (identity)

How can I combine this into the above query to produce the list minus the horses they select to not show?

I know it is something along the lines of

where clientid not in (select ClientID from tblHideHorse) but im afraid that is the limit of my knowledge.


Thanks in advance

MSSQL server 2014
Avatar of Pawan Kumar
Pawan Kumar
Flag of India image

This is what you need-

Use NOT EXISTS instead of NOT IN. NOT IN does not consider NULLs and slow also.

SELECT * FROM 
(
	SELECT
	*
	FROM
	dbo.[qry_HorsesANDRidersAssociations]
	Group By ClientID, HorseID, HorseName
	UNION ALL
	SELECT * FROM 
	dbo.[qry_HorsesRidersHaveCompeted]
	Group BY ClientID, HorseID, HorseName
)k
WHERE NOT EXISTS ( select NULL from tblHideHorse h WHERE h.ClientID = r.ClientID )

Open in new window

Avatar of roblickley

ASKER

Sorry must be being thick - pasted your code and it doesnt work.

Multi-part identifier r.ClientId could not be bound?

in the horsehide table it has to be an exact match for horse and rider together. Not just any horse or any rider existing in that table?

does that make sense?
can you provide few rows with column names of  [qry_HorsesANDRidersAssociations] , dbo.[qry_HorsesRidersHaveCompeted]  and tblHideHorse  so that we will give u exact output ?
Avatar of Bill Prew
Bill Prew

I think at a minimum, this:

r.ClientID

should have been:

k.ClientID


»bp
ASKER CERTIFIED SOLUTION
Avatar of Pawan Kumar
Pawan Kumar
Flag of India image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Thank you very much - I would never have gotten there on my own!
Welcome
glad to help as always :)