Subject: Re: Not seeing script error

From: Tom Lane <[email-masked]>
Date: Thu, 08 Jan 2026 11:48:47 -0500

Rich Shepard <[email-masked]> writes:
> The script:
> select p.person_nbr, p.fname, p.lname, p.job_title, p.direct_phone, p.email,
>         c.company_nbr, c.company_name, c.industry
> from people as p
> inner join companies as c on p.company_nbr = c.company_nbr
> where p.email is not null and
> industry = 'Chemicals' or
> industry = 'Energy' or
> industry = 'Food processor' or
> industry = 'Manufacturing' or
> industry = 'Maritime' or
> industry = 'Transportation' or
> industry = 'Wood products'
> group by p.person_nbr, c.company_nbr
> order by p.person_nbr;

> The where condition, `p.email is not null' is not working; the results
> include rows where email is null while all other columns are okay.

> I had that condition following the industry conditions but that makes no
> difference.

> What have I missed?

AND binds more tightly than OR.  I think you meant

where p.email is not null and
(industry = 'Chemicals' or
industry = 'Energy' or
industry = 'Food processor' or
industry = 'Manufacturing' or
industry = 'Maritime' or
industry = 'Transportation' or
industry = 'Wood products')

BTW, using IN might make this more compact.

			regards, tom lane

---

From: Ron Johnson <[email-masked]>
Date: Thu, 8 Jan 2026 12:03:29 -0500

> BTW, using IN might make this more compact.

While missing parentheses would not break the logic.

-- 
Death to <Redacted>, and butter sauce.
Don't boil me, I'm still alive.
<Redacted> lobster!

---

From: Rich Shepard <[email-masked]>
Date: Thu, 8 Jan 2026 09:10:06 -0800 (PST)

> industry = 'Wood products')

Tom,

While I'm aware that AND binds tigher than OR, I totally missed the need to
package all industry names within parentheses.

> BTW, using IN might make this more compact.

And, it enforces industry types to be in parentheses.

Thanks very much,

Rich