Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

hyperpixel

[Resolvido] duplicação de linhas

Recommended Posts

Pessoal estou tendo problema, com uma paginacao pois puxo do banco os

dados e devido a um representante ter mais que um telefone a query

duplica as linhas para mostrar eles o que não é legal, vou postar as

tabs e a query pra esclarecer melhor:

 

CREATE TABLE IF NOT EXISTS `tb_representantes` (
`idTabRep` int(6) unsigned zerofill NOT NULL DEFAULT '000000',
`id_representante` int(6) unsigned zerofill NOT NULL DEFAULT
'000000',
`nome` varchar(50) COLLATE latin1_general_ci NOT NULL DEFAULT '',
PRIMARY KEY (`idTabRep`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;


INSERT INTO `tb_representantes` (`idTabRep`, `id_representante`,
`nome`)
VALUES
(000001, 000005, 'tony '),
(000002, 000006, 'João '),
(000003, 000007, 'Cláudio'),
(000004, 000008, 'Yuri'),
(000005, 000010, 'mauro');


CREATE TABLE IF NOT EXISTS `tb_tel` (
`idTabtelefone` int(6) unsigned NOT NULL,
`idCliente` int(6) unsigned NOT NULL,
`telefone` varchar(20) NOT NULL,
`tipo` int(1) unsigned NOT NULL,
PRIMARY KEY (`idTabtelefone`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;


INSERT INTO `tb_tel` (`idTabtelefone`, `idCliente`, `telefone`,
`tipo`) VALUES
(1, 1, '1111-1111', 0),
(2, 2, '11-4444-4444', 0),
(3, 3, '11-22222222', 0),
(4, 4, '11-1212-1212', 0),
(6, 6, '12-1221-2221', 0),
(5, 5, '11-6666-6666', 0),
(7, 6, '12-9999-9999', 2),
(8, 7, '11-9669-9696', 0),
(9, 8, '11-7878-7878', 0),
(10, 9, '8778-7887', 0),
(11, 10, '11-7833-3335', 0);
(12, 10, '11-7898-8885', 1);

 

-- o tipo seria: 0= tel principal, 1=tel secundario; 2=cel

 

quando uso esta consulta que seria o normal ela duplica no caso o

registro de id 6 do joao pra mostrar os 2 tels dele isso que n

queremos :

 

 

SELECT
tb_representantes.id_representante,
tb_representantes.nome,
tb_tel.telefone
FROM tb_representantes
JOIN tb_tel ON tb_representantes.id_representante = tb_tel.idCliente
WHERE tb_representantes.id_representante =
tb_representantes.id_representante

 

+------------------+------------------------------+---------------+

| id_representante | nome | telefone |

+------------------+------------------------------+---------------+

| 000006 | João | 12-3413-7442 |<- joao

| 000005 | tony | 11-4786-4463 |

| 000006 | João | 12-9783-2399 |<- joao

| 000007 | Cláudio | 11-3453-5039 |

| 000008 | Yuri | 11-12121212 |

+------------------+------------------------------+---------------+

ja usei distinc left right min(tb_tel.tipo) etc

 

Se alguem conseguir ajudar ou alguma idéia nem que mude a estrutura do

banco pra resolver ficaria muito grato

Compartilhar este post


Link para o post
Compartilhar em outros sites

A estrutura da sua base está correta. Porém, a forma como você está exibindo estes dados faz com que sempre que uma representante que tenha mais de um telefone tenha linha duplicada. Seu problema se resolve com um select. Você poderia acrescentar na cláusula where mais uma condição, onde você selecionaria apenas um telefone. No caso, o fone principal.

Compartilhar este post


Link para o post
Compartilhar em outros sites

A estrutura da sua base está correta. Porém, a forma como você está exibindo estes dados faz com que sempre que uma representante que tenha mais de um telefone tenha linha duplicada. Seu problema se resolve com um select. Você poderia acrescentar na cláusula where mais uma condição, onde você selecionaria apenas um telefone. No caso, o fone principal.

 

Valeu era isso mesmo deu pau na lógica! kkk valeu era esse o caminho que estava precisando..

 

SELECT tb_representantes.id_representante, tb_representantes.nome, tb_tel.telefone
FROM tb_representantes
JOIN tb_tel ON tb_representantes.id_representante = tb_tel.idCliente
WHERE tb_tel.tipo =  '0';

+------------------+------------------------------+---------------+

| id_representante | nome | telefone |

+------------------+------------------------------+---------------+

| 000006 | João bosco vieira rosa | 12-3413-7442 |

| 000005 | Sergio tony cardoso da silva | 11-4786-4463 |

| 000007 | Cláudio Cardoso Saddi | 11-3453-5039 |

| 000008 | Yuri Mosseri | 11-12121212 |

+------------------+------------------------------+---------------+

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.