-
Conteúdo Similar
-
Por Luiz Henrique
Olá pessoas,
Preciso fazer uma consulta em 3 tabelas, mas quando insiro a 3ª na consulta já duplica resultados:
Tabela ticket
id, id_cliente
Tabela clientes
id, nome
Tabela servicos_ticket
id, id_ticket, valor_ticket
Aqui OK
SELECT ticket.*, clientes.* FROM ticket JOIN clientes ON ticket.id_cliente = clientes.id Mas aqui duplica, porque um ticket pode ter vários serviços cadastrados.
ticket.*, clientes.*, servico_ticket.* FROM ticket JOIN clientes ON ticket.id_cliente = clientes.id JOIN servico_ticket ON ticket.id = servico_ticket.id_ticket A listagem tem que ser apenas dos tickets cadastrados, tentei colocar DISTINCT ticket.* mas não adianta.
o resultado deveria ser algo assim:
12344 luiz 10.00
12345 henrique 20.00
mas se o ticket do luiz tiver 3 serviços cadastrados
12344 luiz 10.00
12344 luiz 10.00
12344 luiz 10.00
12345 henrique 20.00
e deveria ser apenas 1, aí eu faria a soma dos valores
12344 luiz 30.00
Como elimino essa duplicação?
Deu para entender?
Obrigado.
-
Por Luiz Henrique
Olá pessoas,
Preciso fazer uma consulta em 3 tabelas, mas quando insiro a 3ª na consulta já duplica resultados:
Tabela ticket
id, id_cliente
Tabela clientes
id, nome
Tabela servicos_ticket
id, id_ticket, valor_ticket
Aqui OK
SELECT ticket.*, clientes.* FROM ticket JOIN clientes ON ticket.id_cliente = clientes.id Mas aqui duplica, porque um ticket pode ter vários serviços cadastrados.
ticket.*, clientes.*, servico_ticket.* FROM ticket JOIN clientes ON ticket.id_cliente = clientes.id JOIN servico_ticket ON ticket.id = servico_ticket.id_ticket A listagem tem que ser apenas dos tickets cadastrados, tentei colocar DISTINCT tickets.* mas não adianta.
o resultado deveria ser algo assim:
12344 luiz 10.00
12345 henrique 20.00
mas se o ticket do luiz tiver 3 serviços cadastrados
12344 luiz 10.00
12344 luiz 10.00
12344 luiz 10.00
12345 henrique 20.00
e deveria ser apenas 1, aí eu faria a soma dos valores
12344 luiz 30.00
Como elimino essa duplicação?
Deu para entender?
Obrigado.
-
Por PeeWee
Opaa, o problema é o seguinte: preciso fazer uma busca no BD com esse código:
$buscar = $pdo->prepare("SELECT * FROM `produtos` WHERE `titulo` LIKE '%$textoBusca%'");
$buscar->execute();
$retorno = array();
$retorno['dados'] = '';
$retorno['qtd'] = $buscar->rowCount();
if($retorno['qtd'] >= 0){
while($conteudo = $buscar->fetchObject()){
$retorno['dados'] .= '<a href="#" id="'.$conteudo->id.':'.$conteudo->valor.'">'.utf8_encode($conteudo->titulo).'</a>';
}
}
O problema é que os resultados estão vindo duplicados (no BD só há 3 registros)
Não tenho idéia do que fazer, se alguem puder ajudar agradeço desde já.
-
Por cleimarlemes
boa tarde.. poderia me ajudar estou com um problema meu Join esta trazendo dados duplicados . "SELECT *,date_format(`horasaida`,'%d-%m-%y às %Hh%i') FROM tb_entrada INNER JOIN tb_saida ON tb_entrada.nome = tb_saida.nome"; "SELECT *,date_format(`horasaida`,'%d-%m-%y às %Hh%i') FROM tb_entrada INNER JOIN tb_saida ON tb_entrada.nome = tb_saida.nome";
tenho 2 tabelas uma de entrada e uma de saida.. nao sei fazer somente em uma tabela nao consegui.. do jeito q ta ta funcionando mas no relatorio ae com o join se uma pessoa entrar e sair mais de 2 vezes no dia.. ele ta retornando os horarios q ele saiu a primeira vez , a segunda vez normal ae na terceira vez ele ja traz os resultados novamente .. nao sei onde ta errado ou que devo fazer pra nao duplicar mostrar somente os dados corretos. -- -- Estrutura da tabela `tb_entrada` -- CREATE TABLE IF NOT EXISTS `tb_entrada` ( `id` int(5) NOT NULL AUTO_INCREMENT, `matricula` int(20) NOT NULL, `tipo` varchar(30) CHARACTER SET latin1 NOT NULL, `situacao` varchar(5) COLLATE utf8_unicode_ci NOT NULL, `nome` varchar(50) CHARACTER SET latin1 NOT NULL, `identidade` varchar(20) CHARACTER SET latin1 NOT NULL, `placa` varchar(10) CHARACTER SET latin1 NOT NULL, `veiculo` varchar(50) CHARACTER SET latin1 NOT NULL, `cidade` varchar(50) CHARACTER SET latin1 NOT NULL, `uf` varchar(2) CHARACTER SET latin1 NOT NULL, `empresa` varchar(50) CHARACTER SET latin1 NOT NULL, `dataentrada` varchar(15) COLLATE utf8_unicode_ci NOT NULL, `horaentrada` varchar(20) COLLATE utf8_unicode_ci NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=15 ; -- -- Estrutura da tabela `tb_saida` -- CREATE TABLE IF NOT EXISTS `tb_saida` ( `id` int(5) NOT NULL AUTO_INCREMENT, `nome` varchar(50) CHARACTER SET latin1 NOT NULL, `horasaida` varchar(10) COLLATE utf8_unicode_ci NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=17 ; meu Join e pro relatorio de entrada e saida,,, ele pega os dados de quem entrou na tabela entrada, data, e hora que entrou e pega a hora que ele saiu na tabela saida..
o pro que se a pessoa entrar mais de 3 vezes no dia o relatorio traz ele umas 6 vezes tipo as 3 que entrou e repete elas de novo..
-