Consulta SQL sem retornar registros duplicados

29/10/2004

0

Amigos,

Preciso de um help para gerar uma consulta em que os produtos não sejam apresentados repetidos.

Tenho uma tabela de produtos e uma tabela de códigos de barra.
A consulta precisa trazer todos os produtos, desde os que não possuem código de barras até aqueles que possuem diversos códigos de barra. Porém, preciso trazer apenas [b:c20df5e5e7]um[/b:c20df5e5e7] registro.
A princípio o código que montei foi o seguinte:
select distinct PRO_COD, PRO_NOME, EANCOD
from TB_PRODUTO
left join TB_EANPRO on (EANPRO = PRO_COD)
order by PRO_COD

Mas como tenho vários códigos de barra, são apresentados registros repetidos.

Outro código que tentei foi:
select distinct PRO_COD, PRO_NOME
from TB_PRODUTO
where PRO_COD in (select distinct EANPRO from TB_EANPRO)

Mas este além de não me retorna o código de barras, só me trará os produtos que possuam código de barras.

Como podería realizar esta consulta?

Agradecido


Rafs

Rafs

Responder

Post mais votado

23/03/2016

Poderia me ajudar?
minha consulta está trazendo dados repetidos, e todos das outras duas tabelas
<?php
$consulta = "SELECT telefones.telefone_id, telefones.telefone_numero,setores.setor_nome, tipos_telefones.tipo_descricao FROM telefones, setores,tipos_telefones";
$query = mysql_query($consulta) or die (mysql_error());
//$resultado = mysql_fetch_assoc($query);
$linha = mysql_num_rows($query);
if($linha>0){
?>

Ricardo Oliveira

Ricardo Oliveira
Responder

Mais Posts

29/10/2004

Rômulo Barros

[b:cacb7ce261]Segue:[/b:cacb7ce261]

select distinct P.PRO_COD, P.PRO_NOME 
from TB_PRODUTO P,TB_EANPRO C
where P.ENAPRO = E.EANPRO
And   P.PRO_COD NOT IN (SELECT P2.PRO_COD
                                       FROM TB_PRODUTO P2
                                       WHERE NOT(P2.PRO_COD = P.PRO_COD))
order by P.PRO_NOME

:wink: :wink:


Responder

29/10/2004

Rafs

[quote:ac7f17d75f=´Undeclared Identifier´][b:ac7f17d75f]Segue:[/b:ac7f17d75f]

select distinct P.PRO_COD, P.PRO_NOME 
from TB_PRODUTO P,TB_EANPRO C
where P.ENAPRO = E.EANPRO
And   P.PRO_COD NOT IN (SELECT P2.PRO_COD
                                       FROM TB_PRODUTO P2
                                       WHERE NOT(P2.PRO_COD = P.PRO_COD))
order by P.PRO_NOME

:wink: :wink:[/quote:ac7f17d75f]

:o Cabuloso essa consulta :o
Mas o resultado que eu preciso não é este.
Está me retornando somente os produtos que possuem códigos de barra e também estão vindo duplicados.
Eu preciso de todos os produtos (com ou sem código de barras) e apenas um registro quando este possui mais do que um código de barras.


Responder

29/10/2004

Emerson Nascimento

tente assim:

select PRO_COD, PRO_NOME, max(EANCOD)
from TB_PRODUTO
left join TB_EANPRO on (EANPRO = PRO_COD)
group by PRO_COD, PRO_NOME
order by PRO_COD


Responder

29/10/2004

Rafs

tente assim: select PRO_COD, PRO_NOME, max(EANCOD) from TB_PRODUTO left join TB_EANPRO on (EANPRO = PRO_COD) group by PRO_COD, PRO_NOME order by PRO_COD


[b:7d5b69b3c7]emerson.en[/b:7d5b69b3c7] É bem isso que eu precisava...
Muito obrigado.. funcionou perfeito.. :D


Responder

23/03/2016

Ricardo Oliveira

Boa tarde.sou novo nesse excelente fórum. Pois bem
Estou iniciando em php, e assim, usava antigamente o ASP clássicos, porém sempre desenvolvi pequenas aplicações, e agora com o php, estou na mesma dúvida, sobre dados duplicados de duas ou mais tabelas, numa consulta. O meu erro é o seguinte

Tenho uma consulta em uma tabela telefones, uma consulta em uma tabela setores, e mais uma em tipos_telefones

que me montam uma tabela puxando esses dados.Como sou chucro em modelagem sql, o meu código esta duplicando, trago os dois únicos registros porém a consulta trás vários, com os mesmos dois registros , porém a cada um dos dois mostra todos os setores, todos os tipos.Então , a consulta me mostra uns 50 resultados. Meu código.

<?php
$consulta = "SELECT telefones.telefone_id, telefones.telefone_numero,setores.setor_nome, tipos_telefones.tipo_descricao FROM telefones, setores,tipos_telefones";
$query = mysql_query($consulta) or die (mysql_error());
//$resultado = mysql_fetch_assoc($query);
$linha = mysql_num_rows($query);
if($linha>0){
?>
Responder

23/03/2016

Ricardo Oliveira

Poderia me ajudar?
minha consulta está trazendo dados repetidos, e todos das outras duas tabelas
<?php
$consulta = "SELECT telefones.telefone_id, telefones.telefone_numero,setores.setor_nome, tipos_telefones.tipo_descricao FROM telefones, setores,tipos_telefones";
$query = mysql_query($consulta) or die (mysql_error());
//$resultado = mysql_fetch_assoc($query);
$linha = mysql_num_rows($query);
if($linha>0){
?>
Responder

23/03/2016

Ricardo Oliveira

Poderia me ajudar?
minha consulta está trazendo dados repetidos, e todos das outras duas tabelas
<?php
$consulta = "SELECT telefones.telefone_id, telefones.telefone_numero,setores.setor_nome, tipos_telefones.tipo_descricao FROM telefones, setores,tipos_telefones";
$query = mysql_query($consulta) or die (mysql_error());
//$resultado = mysql_fetch_assoc($query);
$linha = mysql_num_rows($query);
if($linha>0){
?>
Responder

23/03/2016

Emerson Nascimento

Tente algo como :

SELECT t.telefone_id, t.telefone_numero,s.setor_nome, tt.tipo_descricao
FROM telefones t
left join tipos_telefones tt on tt.tipotelefone_id = t.tipotelefone_id
left join setores s on s.telefone_id = t.telefone_id

Porque da forma que você fez estão sendo relacionados todos os registros das três tabelas entre si.
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar