Dados duplicados consulta mysql php
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){
?>
Ricardo Oliveira
Curtidas 0
Respostas
Fabiano Carvalho
23/03/2016
Suas tabelas possuem relacionamento? Chave Primaria e estrangeira?
Caso negativo, seria ideal começar a pensar nesse caso.
Por favor, poste a estrutura de suas tabelas para que possamos ajudar.
Caso negativo, seria ideal começar a pensar nesse caso.
Por favor, poste a estrutura de suas tabelas para que possamos ajudar.
GOSTEI 0
Marcos P
23/03/2016
Quando você faz...
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 !
... 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 !
GOSTEI 0
Ricardo Oliveira
23/03/2016
Está aqui o meu banco com as tabelas
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;
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;
GOSTEI 0
Ricardo Oliveira
23/03/2016
Por exemplo. A minha pagina de exibição.php trás assim
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
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
GOSTEI 0
Fabiano Carvalho
23/03/2016
Veja se é isso.
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
GOSTEI 0
Ricardo Oliveira
23/03/2016
Valeu meu irmão....resolvido!!
O que vc me indica para entender melhor, pra fazer as minhas query....aqui
Obrigado
O que vc me indica para entender melhor, pra fazer as minhas query....aqui
Obrigado
GOSTEI 0