Skip to content
Advertisement

Where clause only return one condition instead two using OR

I have a simple select statement like:

SELECT *
FROM [customer] AS [c]
    INNER JOIN [customertype] AS [ct] ON [c].[CustTypeKey] = [ct].[CustTypeKey]
    INNER JOIN [ProjectCustomer] AS [pc] ON [c].[CustomerKey] = [pc].[CustomerKey]
    INNER JOIN [Project] AS [p] ON [pc].[ProjectKey] = [p].[ProjectKey]
    INNER JOIN [Address] AS [A] ON [P].ProjectGuid = [A]. [AddressGuid]
WHERE [ct].[CustTypeKey] = 7
    AND [c].[Name] = 'Customer'
    AND [A].[RegionKey] = 2
    OR [A].[RegionKey] = 3

For some reason the WHERE clause is not working correctly. I filter by [A].[RegionKey] = 2 and [A].[RegionKey] = 3. So I want to get all items who have RegionKey 2 and 3, but it only get values with RegionKey 3, and I’m sure I have items with RegionKey 2 too.

What am I doing wrong with this WHERE clause?

Advertisement

Answer

Change this:

AND [A].[RegionKey] = 2
   OR [A].[RegionKey] = 3

to this:

AND ([A].[RegionKey] = 2
   OR [A].[RegionKey] = 3)

or this:

AND [A].[RegionKey] IN (2,3)

Then make sure the other conditions in the WHERE clause are correct, as it’s likely at least one of them is over-filtering.

User contributions licensed under: CC BY-SA
3 People found this is helpful
Advertisement