Consulta SQL sem retornar registros duplicados
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:
Mas como tenho vários códigos de barra, são apresentados registros repetidos.
Outro código que tentei foi:
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
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
Curtidas 1
Melhor post
Ricardo Oliveira
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){
?>
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){
?>
GOSTEI 3
Mais Respostas
Rômulo Barros
29/10/2004
[b:cacb7ce261]Segue:[/b:cacb7ce261]
:wink: :wink:
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:
GOSTEI 2
Rafs
29/10/2004
[quote:ac7f17d75f=´Undeclared Identifier´][b:ac7f17d75f]Segue:[/b:ac7f17d75f]
: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.
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.
GOSTEI 2
Emerson Nascimento
29/10/2004
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
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
GOSTEI 1
Rafs
29/10/2004
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
GOSTEI 1
Ricardo Oliveira
29/10/2004
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){
?>
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){
?>
GOSTEI 1
Ricardo Oliveira
29/10/2004
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){
?>
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){
?>
GOSTEI 1
Ricardo Oliveira
29/10/2004
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){
?>
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){
?>
GOSTEI 2
Emerson Nascimento
29/10/2004
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.
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.
GOSTEI 1