On Thu, Jan 8, 2026 at 11:48 AM Tom Lane <[email protected]> wrote:

> Rich Shepard <[email protected]> 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.
>

While missing parentheses would not break the logic.

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

Reply via email to