Skip navigation links

MySQL Forums :: Portuguese :: Selecionar segunda tabela de acordo com o campo da primeira


Advanced Search

Selecionar segunda tabela de acordo com o campo da primeira
Posted by: Leonardo Cesar Teixeira ()
Date: July 23, 2011 03:19PM

Olá pessoal,

Eu tenho as seguintes tabelas:

clientes
clientes_pf
clientes_pj

Na tabela "clientes" eu armazeno as informações comuns a todos os tipos de clientes (ID, email, telefones, data de cadastro, etc), na tabela "clientes_pf" os dados de pessoas físicas (CPF, RG, sexo, data de nascimento, etc) e na tabela "clientes_pj" os dados de pessoas jurídicas (CNPJ, IE, nome do responsável, etc).

Pois bem, a minha dúvida é como fazer uma consulta com duas tabelas onde a segunda tabela seja definida de acordo com um campo da primeira.

Na primeira tabela (clientes) eu tenho um campo chamado "tipo_pessoa" do tipo ENUM que pode ser "fisica" ou "juridica". Se este campo estiver definido como "fisica" selecionar a tabela "clientes_pf" e se estiver como "fisica" a tabela "clientes_pj".

Eu tentei fazer a consulta da seguinte forma:

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

SELECT c.tipo_pessoa AS tipo, c.email, c.telefone_1, IF('tipo' = 'Fisica', 'clientes_pf', 'clientes_pj') AS t2, t2.*
FROM clientes AS c
INNER JOIN t2
ON c.id_cliente = t2.id_cliente

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

Eu criei uma condição, se o valor do campo "tipo_pessoa" for "Fisica" eu seto o nome da tabela como "clientes_pf", se não, como "clientes_pj".

O nome da tabela é colocado no alias "t2", até aí tudo bem, eu testei e está funcionando.

O problema está quando eu faço o INNER JOIN e o ON, eu coloco o alias "t2" mas ele interpreta como se "t2" fosse o nome da tabela. Como faço pra isso não acontecer?

Espero ter sido claro e agradeço qualquer ajuda. :)

Options: ReplyQuote


Subject Views Written By Posted
Selecionar segunda tabela de acordo com o campo da primeira 2198 Leonardo Cesar Teixeira 07/23/2011 03:19PM


Sorry, you can't reply to this topic. It has been closed.

Content reproduced on this site is the property of the respective copyright holders. It is not reviewed in advance by Oracle and does not necessarily represent the opinion of Oracle or any other party.