Dados duplicados consulta mysql php
23/03/2016
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){
?>
Ricardo Oliveira
Posts
23/03/2016
Fabiano Carvalho
Caso negativo, seria ideal começar a pensar nesse caso.
Por favor, poste a estrutura de suas tabelas para que possamos ajudar.
23/03/2016
Marcos P
... FROM telefones, setores,tipos_telefones
Sem especificar as chaves de ligação entre as tabelas na clausula WHERE do SELECT, conforme solicitado pelo FabiianooC, todos os registros serão combinados nas três tabelas, gerando as duplicações.
Isso só vai funcionar se houver colunas de ligação entre as tabelas !
23/03/2016
Ricardo Oliveira
CREATE TABLE `telefones` (
`telefone_id` int(11) NOT NULL AUTO_INCREMENT,
`tipo_id` int(11) NOT NULL,
`setor_id` int(11) NOT NULL,
`telefone_numero` varchar(15) NOT NULL,
`telefone_mostrar` tinyint(1) NOT NULL,
PRIMARY KEY (`telefone_id`),
KEY `fk_telefones_tipos_telefones` (`tipo_id`),
KEY `fk_telefones_setores1` (`setor_id`),
CONSTRAINT `fk_telefones_setores1` FOREIGN KEY (`setor_id`) REFERENCES `setores` (`setor_id`) ON DELETE NO ACTION ON UPDATE NO ACTION,
CONSTRAINT `fk_telefones_tipos_telefones` FOREIGN KEY (`tipo_id`) REFERENCES `tipos_telefones` (`tipo_id`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
23/03/2016
Ricardo Oliveira
1 36255101 APDO Ramal
2 36255101 APDO Ramal
1 36255101 Contabilidade Ramal
2 36255101 Contabilidade Ramal
1 36255101 Area de Recursos humanos Ramal
2 36255101 Area de Recursos humanos Ramal
1 36255101 Pronto Socorro Ramal
2 36255101 Pronto Socorro Ramal
1 36255101 Pronto Socorro 2 Ramal
2 36255101 Pronto Socorro 2 Ramal
1 36255101 ATI Ramal
2 36255101 ATI Ramal
1 36255101 APDOI Ramal
2 36255101 APDOI Ramal
1 36255101 APDO Direto
2 36255101 APDO Direto
1 36255101 Contabilidade Direto
2 36255101 Contabilidade Direto
1 36255101 Area de Recursos humanos Direto
2 36255101 Area de Recursos humanos Direto
1 36255101 Pronto Socorro Direto
2 36255101 Pronto Socorro Direto
1 36255101 Pronto Socorro 2 Direto
2 36255101 Pronto Socorro 2 Direto
1 36255101 ATI Direto
2 36255101 ATI Direto
1 36255101 APDOI Direto
2 36255101 APDOI Direto
1 36255101 APDO Celular
2 36255101 APDO Celular
1 36255101 Contabilidade Celular
2 36255101 Contabilidade Celular
1 36255101 Area de Recursos humanos Celular
2 36255101 Area de Recursos humanos Celular
1 36255101 Pronto Socorro Celular
2 36255101 Pronto Socorro Celular
1 36255101 Pronto Socorro 2 Celular
2 36255101 Pronto Socorro 2 Celular
1 36255101 ATI Celular
2 36255101 ATI Celular
1 36255101 APDOI Celular
2 36255101 APDOI Celular
1 36255101 APDO Interurbano
2 36255101 APDO Interurbano
1 36255101 Contabilidade Inter
onde existe o id_telefone - telefone_numero - setor_descricao e tipo_telefone
23/03/2016
Fabiano Carvalho
select * from telefones inner join setores on telefones.setor_id = setores.setor_id inner join tipos_telefones on telefones.tipo_id = tipos_telefones.tipo_id
24/03/2016
Ricardo Oliveira
O que vc me indica para entender melhor, pra fazer as minhas query....aqui
Obrigado
Clique aqui para fazer login e interagir na Comunidade :)