PostgreSQL - Como fazer para não retornar registro duplicados?

Tenho as seguintes tabelas e os seguintes registros:

--Tabela Produto 

CREATE SEQUENCE produto_pro_codigo_seq; 
CREATE TABLE produto 
( 
pro_codigo INTEGER DEFAULT NEXTVAL('produto_pro_codigo_seq') NOT NULL, 
pro_descricao CHARACTER VARYING(100) NOT NULL, 
CONSTRAINT pk_produto PRIMARY KEY (pro_codigo) 
); 


--Tabela Código de Barras 

CREATE SEQUENCE codigo_barras_cba_codigo_seq; 
CREATE TABLE codigo_barras 
( 
cba_codigo INTEGER DEFAULT NEXTVAL('codigo_barras_cba_codigo_seq') NOT NULL, 
pro_codigo INTEGER NOT NULL, 
cba_codigo_barras CHARACTER VARYING(20) NOT NULL, 
CONSTRAINT pk_codigo_barras PRIMARY KEY (cba_codigo), 
CONSTRAINT fk_codigo_barras_produto FOREIGN KEY (pro_codigo) REFERENCES produto (pro_codigo) 
); 


--Registros 

INSERT INTO produto (pro_descricao) VALUES ('MEMÓRIA'); 
INSERT INTO produto (pro_descricao) VALUES ('PLACA MÃE'); 
INSERT INTO produto (pro_descricao) VALUES ('PLACA DE VIDEO'); 

INSERT INTO codigo_barras (pro_codigo, cba_codigo_barras) VALUES (1, '000010'); 
INSERT INTO codigo_barras (pro_codigo, cba_codigo_barras) VALUES (1, '000011'); 
INSERT INTO codigo_barras (pro_codigo, cba_codigo_barras) VALUES (2, '000020'); 
INSERT INTO codigo_barras (pro_codigo, cba_codigo_barras) VALUES (2, '000021'); 
INSERT INTO codigo_barras (pro_codigo, cba_codigo_barras) VALUES (3, '000030'); 
INSERT INTO codigo_barras (pro_codigo, cba_codigo_barras) VALUES (3, '000031'); 
INSERT INTO codigo_barras (pro_codigo, cba_codigo_barras) VALUES (3, '000032'); 

Agora preciso montar uma consulta na tabela ‘produto’, buscando todos produtos que iniciam com a letra ‘P’, mas não quero retornar registros com o mesmo código do produto. Nessa consulta preciso trazer os campos: produto.pro_codigo, produto.pro_descricao e codigo_barras.cba_codigo_barras

Consulta que criei:

SELECT produto.pro_codigo, produto.pro_descricao, codigo_barras.cba_codigo_barras 
FROM produto 
INNER JOIN codigo_barras ON (produto.pro_codigo = codigo_barras.pro_codigo) 
WHERE produto.pro_descricao ILIKE 'P%' 
ORDER BY produto.pro_codigo 

O resultado é:

1 - pro_codigo: 2 - pro_descricao: PLACA MÃE - cba_codigo_barras: 000020
2 - pro_codigo: 2 - pro_descricao: PLACA MÃE - cba_codigo_barras: 000021
3 - pro_codigo: 3 - pro_descricao: PLACA DE VIDEO - cba_codigo_barras: 000030
4 - pro_codigo: 3 - pro_descricao: PLACA DE VIDEO - cba_codigo_barras: 000031
5 - pro_codigo: 3 - pro_descricao: PLACA DE VIDEO - cba_codigo_barras: 000032

Como faço para que retorne apenas o registro 1 e o registro 3? (retornar apenas o primeiro encontrado, ignorar os outros registros contido com o mesmo pro_codigo)

Cara, devido ao inner join, e existir mais de uma tupla correspondente na codigo_barras está correto o retorno

Sim, eu sei que está correto o retorno, mas preciso saber como faria a consulta de maneira a me retornar apenas 1 registro de cada item.

Ao invés de retornar:

1 - pro_codigo: 2 - pro_descricao: PLACA MÃE - cba_codigo_barras: 000020
2 - pro_codigo: 2 - pro_descricao: PLACA MÃE - cba_codigo_barras: 000021
3 - pro_codigo: 3 - pro_descricao: PLACA DE VIDEO - cba_codigo_barras: 000030
4 - pro_codigo: 3 - pro_descricao: PLACA DE VIDEO - cba_codigo_barras: 000031
5 - pro_codigo: 3 - pro_descricao: PLACA DE VIDEO - cba_codigo_barras: 000032

Gostaria que o retorno fosse:

1 - pro_codigo: 2 - pro_descricao: PLACA MÃE - cba_codigo_barras: 000020
2 - pro_codigo: 3 - pro_descricao: PLACA DE VIDEO - cba_codigo_barras: 000030

Use DISTINCT:

http://www.java2s.com/Code/PostgreSQL/Select-Query/DISTINCTON.htm

Tenta ai:

SELECT produto.pro_codigo, produto.pro_descricao, codigo_barras.cba_codigo_barras
FROM produto
INNER JOIN codigo_barras ON (produto.pro_codigo = codigo_barras.pro_codigo)
WHERE produto.pro_descricao ILIKE ‘P%’

ORDER BY produto.pro_codigo

[quote=robinsonbsilva]

ORDER BY produto.pro_codigo [/quote]

Desse modo quando tem um registro na tabela de produto mas não na tabela de codigo_barras, não traz o produto.

[quote=El_Psy_Congroo]Use DISTINCT:

http://www.java2s.com/Code/PostgreSQL/Select-Query/DISTINCTON.htm

[/quote]

Tentei utilizando o Distinct On, mas a ferramente que utilizo não possui suporte para essa função, terá que ser de outra maneira.