Not seeing script error
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?
TIA,
Rich
Rich Shepard <rshepard@appl-ecosys.com> 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
On Thu, Jan 8, 2026 at 11:48 AM Tom Lane <tgl@sss.pgh.pa.us> wrote:
Rich Shepard <rshepard@appl-ecosys.com> 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!
On Thu, 8 Jan 2026, Tom Lane wrote:
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')
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