Ir para conteúdo

POWERED BY:

Arquivado

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

hyperpixel

Join?!

Recommended Posts

estou com o seguinte problema:

tenho uma tabela de controle tab_acesso com a seguinte estrutura:

 

tab_acesso

-------------------------------------------------------------

id_cliente | senha | login |

---------------------------------------

000093 | 111 | hyper

000012 | teste | noel

000044 | mesa | ioda

 

uma tabela telefone

 

tab_tel

------------------------------------

id_cliente | telefone |

-------------------------------------

000093 | 11-32222220

000093 | 11-32222220

000093 | 11-32222220

000012 | 11-32222220

000012 | 11-32222220

000044 | 11-32222220

000044 | 11-32222220

000044 | 11-32222220

 

e uma de clientes

sistem_clientes

----------------------------------------

id_sistem_clientes | idCliente | nomeEmpresa | nomeFantasia | nome | cnpj

-----------------------------------------------------------------------------------------------------------------------------

000001 | 000093 | Papelaria do zé S.A | Papelaria do zé S.A | ERONI |

000002 | 000044 | tropic shield ltda-me | tropic | Paulo | 111111

000004 | 000012 | Eletro-Eletrônicos Ltda.| Ubuy | Vivian de Paiva |

 

................................................................................

...........................

 

o problema esta quando rodo a consulta por exemplo, para mostrar quem esta com o cnpj vazio ele traz mas tras os cadastros em duplicidade pelo que percebi devido ao fato de ter mais do que um numero de tel ou seja na tab tel tem 2 ou + numeros relacionados com o mesmo id sei que tem problema de normalizacao (pergunta vale a pena colocar uma coluna como indice nessa tabela? e se colocar mais um campo para diferenciar os tel ex ( tipo char 1) para saber se é fixo, cel, fax etc pois não tenho esse controle)no inner join ja mudei para left e nao mudou nada quando coloco right trava a consulta alguem sabe como resolvo isso?!!

abaixo as tabelas se quiserem simular e o join que estou usando.

obs o sistema esta com uns 1000 cadastros

 

valeu

========================================================

 

tab_tel-- phpMyAdmin SQL Dump

-- version 2.6.3-pl1

-- http://www.phpmyadmin.net

--

-- Servidor: localhost

-- Tempo de Geração: Set 19, 2008 as 09:34 AM

-- Versão do Servidor: 3.23.47

-- Versão do PHP: 4.1.1

--

-- Banco de Dados: `teste`

--

 

-- --------------------------------------------------------

 

--

-- Estrutura da tabela `tab_tel`

--

 

CREATE TABLE `tab_tel` (

`id_cliente` int(6) unsigned zerofill NOT NULL default '000000',

`telefone` varchar(12) NOT NULL default ''

) TYPE=MyISAM;

 

--

-- Extraindo dados da tabela `tab_tel`

--

 

INSERT INTO `tab_tel` VALUES (000093, '11-32222220');

INSERT INTO `tab_tel` VALUES (000093, '11-37361263');

INSERT INTO `tab_tel` VALUES (000093, '11-11111113');

INSERT INTO `tab_tel` VALUES (000093, '11-00000353');

INSERT INTO `tab_tel` VALUES (000003, '11-44444444');

INSERT INTO `tab_tel` VALUES (000044, '71-32323333');

INSERT INTO `tab_tel` VALUES (000044, '71-12321333');

INSERT INTO `tab_tel` VALUES (000044, '71-33026066');

INSERT INTO `tab_tel` VALUES (000012, '24-33953805');

INSERT INTO `tab_tel` VALUES (000012, '24-81119435');

INSERT INTO `tab_tel` VALUES (000012, '24-33410261');

 

 

=================================================================

-- phpMyAdmin SQL Dump

-- version 2.6.3-pl1

-- http://www.phpmyadmin.net

--

-- Servidor: localhost

-- Tempo de Geração: Set 19, 2008 as 09:43 AM

-- Versão do Servidor: 3.23.47

-- Versão do PHP: 4.1.1

--

-- Banco de Dados: `teste`

--

 

-- --------------------------------------------------------

 

--

-- Estrutura da tabela `sistem_clientes`

--

 

CREATE TABLE `sistem_clientes` (

`id_sistem_clientes` int(6) unsigned zerofill NOT NULL default '000000',

`idCliente` int(6) unsigned zerofill NOT NULL default '000000',

`nomeEmpresa` varchar(150) NOT NULL default '',

`nomeFantasia` varchar(150) NOT NULL default '',

`nome` varchar(150) NOT NULL default '',

`cnpj` varchar(30) NOT NULL default '',

 

PRIMARY KEY (`id_sistem_clientes`)

) TYPE=MyISAM;

 

--

-- Extraindo dados da tabela `sistem_clientes`

--

 

INSERT INTO `sistem_clientes` VALUES (000001, 000093, 'Papelaria do zé', 'Papelaria do zé S.A', 'ERONI', '');

INSERT INTO `sistem_clientes` VALUES (000002, 000044, 'tropic ltda-me', 'tropic shield', 'Paulo', '00000000');

INSERT INTO `sistem_clientes` VALUES (000004, 000012, 'Eletro-Eletrônicos Ltda.', 'Ubuy', 'Vivian de Paiva', '');

==========================================================================

 

 

-- phpMyAdmin SQL Dump

-- version 2.6.3-pl1

-- http://www.phpmyadmin.net

--

-- Servidor: localhost

-- Tempo de Geração: Set 19, 2008 as 10:06 AM

-- Versão do Servidor: 3.23.47

-- Versão do PHP: 4.1.1

--

-- Banco de Dados: `teste`

--

 

-- --------------------------------------------------------

 

--

-- Estrutura da tabela `tab_acesso`

--

 

CREATE TABLE `tab_acesso` (

`id_cliente` int(6) unsigned zerofill NOT NULL default '000000',

`data_cadastro` datetime NOT NULL default '0000-00-00 00:00:00',

`login` varchar(120) NOT NULL default '',

`senha` varchar(12) NOT NULL default '',

`oq` int(1) NOT NULL default '0',

`ativo` int(1) NOT NULL default '0',

PRIMARY KEY (`id_cliente`)

) TYPE=MyISAM;

 

--

-- Extraindo dados da tabela `tab_acesso`

--

 

INSERT INTO `tab_acesso` VALUES (000012, '2007-11-30 15:20:00', 'rubinho, '12345', 1, 1);

INSERT INTO `tab_acesso` VALUES (000093, '2007-11-30 15:22:00', 'ioda, '1111', 0, 1);

INSERT INTO `tab_acesso` VALUES (000044, '2007-11-30 15:25:00', 'homero', '241265', 0, 1);

 

 

==========================================================================

SELECT

tab_acesso.id_cliente,

tab_acesso.login,

tab_acesso.senha,

id_sistem_clientes.sistem_clientes, -- <- preciso trazer essa coluna?!!

sistem_clientes.idCliente,

sistem_clientes.nomeEmpresa,

sistem_clientes.nomeFantasia,

sistem_clientes.nome,

sistem_clientes.cnpj

FROM tab_acesso

INNER JOIN sistem_clientes

ON tab_acesso.id_cliente=sistem_clientes.idCliente

left JOIN tab_tel

ON tab_acesso.id_cliente=tab_tel.id_cliente

WHERE

sistem_clientes.cnpj

=''

ORDER BY

tab_acesso.id_cliente

ASC

Compartilhar este post


Link para o post
Compartilhar em outros sites

AMIGAO FAZ ESSE COMANDO AÊ ERA SÓ você AGRUPAR OS DADOS DA CONSULTA VLW ... CASO você QUISER SABER A QUANTIDADE DE DADOS COM DUPLICIDADE você USA UM COUNT(*) AS QUANT

 

SELECT COUNT(*),

a.id_cliente,

a.login,

...

 

SELECT

a.id_cliente,

a.login,

a.senha,

b.id_sistem_clientes,

b.idCliente,

b.nomeEmpresa,

b.nomeFantasia,

b.nome,

b.cnpj

FROM tab_acesso a, sistem_clientes b, tab_tel c

where a.id_cliente = b.idCliente

and c.id_cliente = a.id_cliente

and b.cnpj = ''

group by a.id_cliente

order by a.id_cliente ASC

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.