CrazyLOL 2 Denunciar post Postado Janeiro 14, 2014 Bom dia, queria saber se é possivel usar um IF para selecionar uma tabela... por exemplo montar um if dessa maneira. select a.*,b.*,c.* from clientes_geral a IF a.tipo_cliente == 'F' THEN join clientes_fisico b on (b.cod_cliente = a.cod_cliente) IF a.tipo_cliente == 'J' THEN join clientes_juridico b on (b.cod_cliente = a.cod_cliente) where ...... Existe essa possibilidade? se sim, como que posso montar? Obrigado :D Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Janeiro 14, 2014 Uma solução : Crie uma view que una clientes_fisico e clientes_juridico create or replace view v_clientes as select 'fisico' tipo,cod_cliente,cpf cpf_cnpj,nome from clientes_fisico union all select 'juridico' tipo,cod_cliente,cnpj cpf_cnpj,nome from clientes_juridico Faço o join na VIEW select a.* from clientes_geral a join v_clientes b on (b.cod_cliente = a.cod_cliente) ... mas o que vem a ser clientes_geral ?! Compartilhar este post Link para o post Compartilhar em outros sites
CrazyLOL 2 Denunciar post Postado Janeiro 14, 2014 Clientes_geral são dados principais, que tanto faz um cliente juridico ou fisico ter, assim eu utilizo apenas 1 formulario basicamente para salvar qualquer tipo de cliente. única coisa q muda são essas 2 tabelas... Mas gostei da sugestão e vou fazer isso Obrigado! Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Janeiro 14, 2014 Faça então uma view com o join CREATE OR REPLACE VIEW V_CLIENTE_GERAL_DADOS AS SELECT ..... FROM CLIENTE_GERAL,CLIENTE_FISICO WHERE CLIENTE_GERAL_ID = CLIENTE_FISICO_ID UNION ALL SELECT ..... FROM CLIENTE_GERAL,CLIENTE_JURIDICO WHERE CLIENTE_GERAL_ID = CLIENTE_JURIDICO_ID Compartilhar este post Link para o post Compartilhar em outros sites
ivanferrer 5 Denunciar post Postado Janeiro 17, 2014 SELECT A.*,B.*,C.* FROM clientes_geral A LEFT JOIN clientes_fisico B ON(B.cod_cliente = A.cod_cliente AND A.tipo_cliente = 'F') LEFT JOIN clientes_juridico C ON(C.cod_cliente = A.cod_cliente AND A.tipo_cliente = 'J') WHERE 1; Você não precisa usar IF nestes casos. Mas se fosse necessário, usaria algo como isso: SELECT IF(A.tipo_cliente='F',A.*,null) as 'Dados Cliente F', IF(A.tipo_cliente='J',A.*,null) as 'Dados Cliente J', B.*,C.* FROM clientes_geral A LEFT JOIN clientes_fisico B ON(B.cod_cliente = A.cod_cliente AND A.tipo_cliente = 'F') LEFT JOIN clientes_juridico C ON(C.cod_cliente = A.cod_cliente AND A.tipo_cliente = 'J') WHERE 1; Compartilhar este post Link para o post Compartilhar em outros sites
paulojuchem 20 Denunciar post Postado Janeiro 20, 2014 eu faria algo assim SELECT cg.*, IF(cg.tipo_cliente='F',(SELECT cj.nome_do_campo clientes_juridico cj WHERE cg.cod_cliente = cj.cod_cliente),(SELECT cf.nome_do_campo clientes_fisico cf WHERE cg.cod_cliente = cf.cod_cliente)) AS campoX FROM clientesGeral cg Compartilhar este post Link para o post Compartilhar em outros sites