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)