user8782879
user8782879

Reputation:

SQL returning more values than it should

I want to query all the Christmas that are Handmade but instead I'm getting all Christmas values.

SELECT * FROM PRODUCT WHERE PROD_CAT = 'Christmas' OR SEC_CAT = 'Christmas' 
AND SUB_CAT = 'Handmade' OR SEC_SUB_CAT = 'Handmade'

How can I get all Handmade from Christmas?

Upvotes: 0

Views: 43

Answers (4)

Tim Biegeleisen
Tim Biegeleisen

Reputation: 521914

On certain versions of SQL we could simplify your query even further to this:

SELECT *
FROM PRODUCT
WHERE 'Christmas' IN (PROD_CAT, SEC_CAT) OR 'Handmade' IN (SUB_CAT, SEC_SUB_CAT);

Upvotes: 0

G.Arima
G.Arima

Reputation: 1171

You just need to put brackets and then you are good to go:

SELECT * FROM PRODUCT WHERE (PROD_CAT = 'Christmas' OR SEC_CAT = 'Christmas') 
AND (SUB_CAT = 'Handmade' OR SEC_SUB_CAT = 'Handmade');

Let me know in case of any queries.

Upvotes: 1

rypskar
rypskar

Reputation: 2092

You have to use parentheses to make it clear for sql what you want

SELECT * FROM PRODUCT WHERE (PROD_CAT = 'Christmas' OR SEC_CAT = 'Christmas')
AND (SUB_CAT = 'Handmade' OR SEC_SUB_CAT = 'Handmade')

Upvotes: 0

Gordon Linoff
Gordon Linoff

Reputation: 1270341

Use parentheses. I presume you want:

SELECT *
FROM PRODUCT
WHERE (PROD_CAT = 'Christmas' OR SEC_CAT = 'Christmas') AND
      (SUB_CAT = 'Handmade' OR SEC_SUB_CAT = 'Handmade');

Upvotes: 0

Related Questions