kadunit 4 Denunciar post Postado Março 25, 2013 Pessoal, Seguinte... tenho uma tabela chamada ordens. nessa tabela ordens eu tenho uma coluna aberto_por que salva o id do usuario ou o id do sindico que está abrindo a ordem. Ai surgiu meu problema: Na hora de buscar as ordens do sistema, quando eu coloco pra trazer a coluna aberto por? o id do aberto por pode estar em duas tabelas diferentes... fazendo pra uma coluna ou para outra funciona perfeitamente. segue: select o.id as ordem_id, o.data_abertura as data_abertura, o.dia_agendado as dia_agendado, o.hora_agendado as hora_agendado, o.problema as problema, o.problema_descricao as problema_descricao, os.nome as ordem_status, con.nome as condominio_nome, usu.login as aberto_por, usu2.nome as operador from ordens o, ordensStatus os, condominios con, usuarios usu, usuarios usu2 where o.ordem_status_id = os.id and o.contratos_id = con.id and o.aberto_por = usu.id and o.usuarios_id = usu2.id order by o.dia_agendado desc Compartilhar este post Link para o post Compartilhar em outros sites
shini 318 Denunciar post Postado Março 25, 2013 troque where (ansi 86) por join(ansi 92) http://sqlfromhell.wordpress.com/2009/09/15/trabalhando-com-join/ http://www.w3schools.com/sql/sql_join.asp Compartilhar este post Link para o post Compartilhar em outros sites
kadunit 4 Denunciar post Postado Março 25, 2013 Shini, o problema é que o do aberto por, pode estar em duas tabelas diferentes... nao sei como fazer essa busca. Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Março 25, 2013 fazendo pra uma coluna ou para outra funciona perfeitamente se funciona qual o problema ? ou from ordens o, ordensStatus os, condominios con, usuarios usu, usuarios usu2 where o.ordem_status_id = os.id and o.contratos_id = con.id and (o.aberto_por = usu.id or o.usuarios_id = usu2.id) order by o.dia_agendado desc -------------------- mas, por duas tabelas diferentes entendemos que são tabelas ou colunas ?! Não entendi. Compartilhar este post Link para o post Compartilhar em outros sites
kadunit 4 Denunciar post Postado Março 25, 2013 Motta, Deixe tentar me explicar melhor... tenho 3 tabelas envolvidas... ordens, usuarios e sindicos Na hora que um usuario abre uma nova ordem, eu salvo na coluna aberto por da tabela ordens o id do usuario. Na hora que um sindico abre uma nova ordem, eu salvo o id dele na tabela ordens também. Na hora que busco as ordens abertas, no campo aberto por eu busco o nome de quem abriu... ai surgiu meu problema: Quando busco na tabela usuarios, se o aberto_por tiver um id 6 por exemplo, id 6 foi uma ordem aberta por um sindico, logo nao mostra essa ordem. Eu queria colocar na tabela aberto_por uma "busca" em duas tabelas diferentes, usuarios e sindicos. Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Março 25, 2013 Você pode ter um problema aqui creio. Se o id for 6 pode existir um usuário com este id e um síndico com este id, pessas diferentes. Não seria melhor trabalhar com dois campos diferentes , ou um indicador que quem fez o registro ? Compartilhar este post Link para o post Compartilhar em outros sites
kadunit 4 Denunciar post Postado Março 25, 2013 Motta, Na tabela ordens eu uso os campos assim: usuario_id = eu salvo o id do usuario que vai atender a ordem... no caso o operador ( que ficam salvos na tabela usuario ) que tenha um id 6 e nome joao. aberto_por = eu salvo o id do usuario da sessao... que vamos supor seja 7, de nome maria na tabela usuarios e na tabela sindicos eu posso ter um usuario 7 tambem que sera a joana.. O que voce me sugere fazer? Eu tentei dessa forma e nao consegui and (o.aberto_por = usu.id or o.usuarios_id = usu2.id) Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Março 25, 2013 Mas como vc sabe que um valor "7" do campo aberto_por se refere a uma tabela ou a outra ? Sem entender esta lógica não tem como montar o SQL Compartilhar este post Link para o post Compartilhar em outros sites
kadunit 4 Denunciar post Postado Março 25, 2013 Eu nao sabia! O número 7 realmente podia estar em duas tabelas e assim não conseguiria saber quem abriu de fato. Salvei na sessão o login do usuario logado que é único e estou salvando esse valor na coluna aberto_por. Obrigado Motta! Compartilhar este post Link para o post Compartilhar em outros sites