Re: SQL "OR" Problem
От | Frank Bax |
---|---|
Тема | Re: SQL "OR" Problem |
Дата | |
Msg-id | 5.2.1.1.0.20050826161114.03966220@pop6.sympatico.ca обсуждение исходный текст |
Ответ на | SQL "OR" Problem (<operationsengineer1@yahoo.com>) |
Список | 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 по дате отправления: