MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

Obrigado

Administração do MaximoAccess

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access

    Criar view condicional em mysql

    Compartilhe
    avatar
    lgdelai
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 146
    Registrado : 31/03/2012

    Criar view condicional em mysql

    Mensagem  lgdelai em Seg 04 Ago 2014, 03:20

    Olá a todos.

    Desde já agradeço a quem puder ajudar de qualquer forma.

    Preciso criar uma view que retorne em uma coluna específica, dados que podem vir
    de duas tabelas diferentes baseado em uma condição.

    Vejam:

    -----------------------------
    Tabela Anunciantes:
    anun_id
    anun_tipo
    anun_responsavel
    -----------------------------
    Tabela Contrato:
    cont_id
    cont_nome_negocio
    cont_anun_id
    -----------------------------
    Tabela Dados_pf
    dpf_id
    dpf_nome
    dpf_anun_id
    -----------------------------
    Tabela Dados_pj
    dpj_id
    dpj_razao_social
    dpf_anun_id
    -----------------------------


    View Anunciantes
    anun_responsavel
    cont_tipo
    dpf_nome OU dpj_razao_social

    Quero que na linha onde a o campo "cont_tipo" conter "pf" seja exibido o conteúdo "dpf_nome" da tabela "dados_pf"
    e onde conter "pj" seja exibido o conteúdo "dpj_razao_social" da coluna "dados_pj"

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

    Usei este código:

    SELECT anun_responsavel, anun_tipo, dpf_nome, dpj_razao_social, cont_nome_negocio
    FROM anunciantes, dados_pf, dados_pj, contratos
    WHERE anunciantes.anun_id=contratos.cont_anun_id
    AND anunciantes.anun_id=dados_pj.dpj_anun_id
    OR anunciantes.anun_id=dados_pf.dpf_anun_id
    ORDER BY anun_responsavel ASC

    Porém fiz um teste com tres registros, e não deu certo, aparecem muitos e com combinações erradas.
    alguém pode me ajudar?

    Obrigado.
    Anexos
    Imagen Problema BD VIEW.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (193 Kb) Baixado 10 vez(es)
    avatar
    lgdelai
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 146
    Registrado : 31/03/2012

    Re: Criar view condicional em mysql

    Mensagem  lgdelai em Seg 04 Ago 2014, 07:00

    Bom a situação atual é a seguinte:

    Este código aqui quando eu uso ele sem ser na view, ele funciona perfeitamente.

    SELECT anun_responsavel, anun_tipo, IF(anun_tipo = 'pf', dpf_nome, dpj_razao_social) as anun_nome, cont_nome_negocio
    FROM anunciantes
    LEFT JOIN dados_pf ON dpf_anun_id = anun_id
    LEFT JOIN dados_pj ON dpj_anun_id = anun_id
    JOIN contratos ON cont_anun_id = anun_id
    ORDER BY anun_responsavel ASC


    Porém se eu criar a view com ele recebo o erro:
    #1054 - Unknown column 'dpf_nome' in 'order clause'

    DIz que a coluna não foi encontrada, Só que a coluna existe, pois como disse o código funciona.

    Agora vejam só, quando eu removo o IF e o código fica asim:

    SELECT anun_responsavel, anun_tipo, dpf_nome, dpj_razao_social, cont_nome_negocio
    FROM anunciantes
    LEFT JOIN dados_pf ON dpf_anun_id = anun_id
    LEFT JOIN dados_pj ON dpj_anun_id = anun_id
    JOIN contratos ON cont_anun_id = anun_id
    ORDER BY anun_responsavel ASC


    ele funciona na view, porém ele não junta as colunas dpf_nome e dpj_razao_social, ele exibe as duas colunas porém uma do lado da outra, e aque que não tem dados ficam nulas, gostaria delas unidas como consigo com o primeiro código, porém na view o código não funciona, não faz sentido isto.

      Data/hora atual: Sex 15 Dez 2017, 15:55