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