| From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> | 
|---|---|
| To: | operationsengineer1(at)yahoo(dot)com | 
| Cc: | pgsql-novice(at)postgresql(dot)org | 
| Subject: | Re: SQL "OR" Problem | 
| Date: | 2005-08-26 20:27:47 | 
| Message-ID: | 22514.1125088067@sss.pgh.pa.us | 
| Views: | Whole Thread | Raw Message | Download mbox | Resend email | 
| Thread: | |
| Lists: | pgsql-novice | 
<operationsengineer1(at)yahoo(dot)com> writes:
> WHERE t_emp.pos_id = t_pos.pos_id
> AND t_inspect.inspect_emp_id = t_emp.emp_id
> AND t_pos.pos = 'Assembler'
> OR t_pos.pos = 'Quality Inspector'
> OR t_pos.pos = 'Test Technician'
You probably want some parentheses with that:
WHERE t_emp.pos_id = t_pos.pos_id
      AND t_inspect.inspect_emp_id = t_emp.emp_id
      AND (t_pos.pos = 'Assembler'
           OR t_pos.pos = 'Quality Inspector'
           OR t_pos.pos = 'Test Technician')
I believe AND binds more tightly than OR by default, so your original
means
WHERE (t_emp.pos_id = t_pos.pos_id
       AND t_inspect.inspect_emp_id = t_emp.emp_id
       AND t_pos.pos = 'Assembler')
      OR t_pos.pos = 'Quality Inspector'
      OR t_pos.pos = 'Test Technician'
which is unlikely to be what you want.
regards, tom lane
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Steve Crawford | 2005-08-26 20:29:09 | Re: SQL "OR" Problem | 
| Previous Message | Stephan Szabo | 2005-08-26 20:24:50 | Re: SQL "OR" Problem |