Not seeing script error

Started by Rich Shepard3 months ago4 messagesgeneral
Jump to latest
#1Rich Shepard
rshepard@appl-ecosys.com

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

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Rich Shepard (#1)
Re: Not seeing script error

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

#3Ron
ronljohnsonjr@gmail.com
In reply to: Tom Lane (#2)
Re: Not seeing script error

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!

#4Rich Shepard
rshepard@appl-ecosys.com
In reply to: Tom Lane (#2)
Re: Not seeing script error

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