Re: SQL "OR" Problem - Mailing list pgsql-novice

From Frank Bax
Subject Re: SQL "OR" Problem
Date
Msg-id 5.2.1.1.0.20050826161114.03966220@pop6.sympatico.ca
Whole thread Raw
In response to SQL "OR" Problem  (<operationsengineer1@yahoo.com>)
List pgsql-novice
At 03:55 PM 8/26/05, operationsengineer1@yahoo.com wrote:

>hi all,
>
>i'm trying to populate a list box with the names of
>employees linked to certain positions (each name
>listed once)...
>
>SELECT DISTINCT t_emp.emp_id, t_emp.first_name || ' '
>|| t_emp.last_name, t_pos.pos
>
>FROM t_inspect, t_emp, t_pos
>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 get the following results:
>
>1. if an employee is an Assembler then s/he is listed
>3 times - once with each position "pos".
>
>2. if an employee is a Qaulity Inspector then s/he is
>listed 2 times - once with each position "pos"
>exlcuding "Assembler".
>
>1. if an employee is a Test Technician then s/he will
>likely be listed once with "Test Technician".  i don't
>have a Test Technician in my dev db.
>
>i'm not sure if the OR keyword is supported or if i
>just made it up.  again, i'm just trying to list each
>name once in each of these three positions (a name can
>only be in one position category).
>
>i think i'm either abusing "OR", missing something in
>my where clause or, most probably, both.
>
>any help would be appreciated.


I'll guess the problem is operator precedence.  Try:

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' )

Check out table 4.1 on this page.

http://www.postgresql.org/docs/8.0/interactive/sql-syntax.html


pgsql-novice by date:

Previous
From:
Date:
Subject: SQL "OR" Problem
Next
From: Philip Hallstrom
Date:
Subject: Re: SQL "OR" Problem