Consulta SQL sem retornar registros duplicados
29/10/2004
0
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
Post mais votado
23/03/2016
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
Mais Posts
29/10/2004
Rômulo Barros
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:
29/10/2004
Rafs
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.
29/10/2004
Emerson Nascimento
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
29/10/2004
Rafs
[b:7d5b69b3c7]emerson.en[/b:7d5b69b3c7] É bem isso que eu precisava...
Muito obrigado.. funcionou perfeito.. :D
23/03/2016
Ricardo Oliveira
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){
?>
23/03/2016
Ricardo Oliveira
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){
?>
23/03/2016
Ricardo Oliveira
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){
?>
23/03/2016
Emerson Nascimento
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.
Clique aqui para fazer login e interagir na Comunidade :)