lgdelai 0 Denunciar post Postado Agosto 4, 2014 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 virde duas tabelas diferentes baseado em uma condição.Vejam:-----------------------------Tabela Anunciantes:anun_idanun_responsavel-----------------------------Tabela Contrato:cont_idcont_tipocont_anun_id-----------------------------Tabela Dados_pfdpf_iddpf_nomedpf_anun_id-----------------------------Tabela Dados_pjdpj_iddpj_razao_socialdpf_anun_id-----------------------------View Anunciantesanun_responsavelcont_tipodpf_nome OU dpj_razao_socialQuero 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 FROM anunciantes, dados_pf, dados_pj, contratosWHERE anunciantes.anun_id=contratos.cont_anun_idAND anunciantes.anun_id=dados_pj.dpj_anun_idOR anunciantes.anun_id=dados_pf.dpf_anun_idORDER BY anun_responsavel ASCPoré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. Compartilhar este post Link para o post Compartilhar em outros sites
lgdelai 0 Denunciar post Postado Agosto 4, 2014 Corrigindo as tabelas acima:-----------------------------Tabela Anunciantes:anun_idanun_responsavel-----------------------------Tabela Contrato:cont_idcont_tipocont_anun_id-----------------------------Tabela Dados_pfdpf_iddpf_nomedpf_anun_id-----------------------------Tabela Dados_pjdpj_iddpj_razao_socialdpf_anun_id-----------------------------E O CÓDIGO SELECT anun_responsavel, anun_tipo, dpf_nome, dpj_razao_social, cont_nome_negocio FROM anunciantes, dados_pf, dados_pj, contratosWHERE anunciantes.anun_id=contratos.cont_anun_idAND anunciantes.anun_id=dados_pj.dpj_anun_idOR anunciantes.anun_id=dados_pf.dpf_anun_idORDER BY anun_responsavel ASC Compartilhar este post Link para o post Compartilhar em outros sites
lgdelai 0 Denunciar post Postado Agosto 4, 2014 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. Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Agosto 4, 2014 http://dev.mysql.com/doc/refman/5.0/en/control-flow-functions.html Creio que um CASE ou IF Resolve isto. Compartilhar este post Link para o post Compartilhar em outros sites
lgdelai 0 Denunciar post Postado Agosto 4, 2014 Então mota, leia o meu post anterior ao seu, com IF dá certo, Porém se eu criar a view com o mesmo código o erro aparece. Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Agosto 4, 2014 Perdão, não reparei no detalhe, sendo uma VIEW não ordene (quem usar ordena) ou ordene pela posição (order by 1) Compartilhar este post Link para o post Compartilhar em outros sites
lgdelai 0 Denunciar post Postado Agosto 4, 2014 Tirei a ultima linha, ORDER BY a.anun_responsavel ASCmas o erro periste. Mesmo eu não usando a coluna dpf_nome, o erro persiste #1054 - Unknown column 'dpf_nome' in 'order clause' Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Agosto 4, 2014 Ordene pela posição order by 1 Compartilhar este post Link para o post Compartilhar em outros sites
paulojuchem 20 Denunciar post Postado Agosto 4, 2014 postei errado. Compartilhar este post Link para o post Compartilhar em outros sites
lgdelai 0 Denunciar post Postado Agosto 4, 2014 Mesma coisa com o "dpf_nome" Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Agosto 4, 2014 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 1 ASC --<<<< ordena pela 1ª coluna Compartilhar este post Link para o post Compartilhar em outros sites
lgdelai 0 Denunciar post Postado Agosto 4, 2014 DESCOBRI. O erro está relacionado ao nome que dei a view. não pode conter "view" no início do nome como estava, "view_anunciantes" Então testei outros nomes e funcionou, inclusive "anunciantes_view" Agora minha dúvida é, será que tem algum relacionamento por eu ter conectado meu sistema do Dreamweaver com esta tabela chamada "view_anunciantes"? Será que esta conexão fez alguma alteração no meu BD que causou o erro? Vou conectar a tabela nova e ver no que dá. OBRIGADO A TODOS, Compartilhar este post Link para o post Compartilhar em outros sites