Fórum Dúvida: SQL multiplicando 2 tabelas, 1 delas com 2 FK da outra #403566
22/06/2011
0
Olá, a duvida é a seguinte:
Eu tenho 2 tabelas em um banco de dados Firebird, tabela USUARIO e MENSAGEM. Um usuario manda uma mensagem para N usuarios, então fica assim:
Então eu quero trazer os dados da multiplicação para popular uma espécie de "Caixa de Entrada". Como eu faço uma SQL para trazer os campos:
mensagem.codigo, mensagem.remetente,
mensagem.destinatario, mensagem.status, usuario.nome (NOME DO REMETENTE),
usuario.nome (NOME DO DESTINATARIO), mensagem.assunto, mensagem.msg
Eu fiz a seguinte SQL:
onde :p vai ser passado por parâmetro, q é o codigo do usuario q recebeu a mensagem.
O problema é que os nomes que ele traz são do destinatário, e eu queria que um fosse do remetente e outro do destinatario, mas não sei como fazer.. se alguem souber e puder ajudar, fico grato.
Eu tenho 2 tabelas em um banco de dados Firebird, tabela USUARIO e MENSAGEM. Um usuario manda uma mensagem para N usuarios, então fica assim:
CREATE TABLE USUARIO ( IDUSUARIO INTEGER NOT NULL, NOME VARCHAR(50), EMAIL VARCHAR(50), LOGIN VARCHAR(20), SENHA VARCHAR(20) ) CREATE TABLE MENSAGEM( CODIGO INTEGER NOT NULL, ASSUNTO VARCHAR(200), MSG VARCHAR(300), STATUS VARCHAR(15), REMETENTE INTEGER, DESTINATARIO INTEGER, PRIMARY KEY(CODIGO), FOREIGN KEY(REMETENTE) REFERENCES USUARIO(IDUSUARIO), FOREIGN KEY(DESTINATARIO) REFERENCES USUARIO(IDUSUARIO) )
Então eu quero trazer os dados da multiplicação para popular uma espécie de "Caixa de Entrada". Como eu faço uma SQL para trazer os campos:
mensagem.codigo, mensagem.remetente,
mensagem.destinatario, mensagem.status, usuario.nome (NOME DO REMETENTE),
usuario.nome (NOME DO DESTINATARIO), mensagem.assunto, mensagem.msg
Eu fiz a seguinte SQL:
select mensagem.codigo codigomensagem, mensagem.remetente codigoremetente, mensagem.destinatario codigodestinatario, mensagem.status status, usuario.nome nomeremetente, usuario.nome nomedestinatario, mensagem.assunto assunto, mensagem.msg msg from usuario, mensagem where mensagem.destinatario = usuario.idusuario and usuario.idusuario = :p
onde :p vai ser passado por parâmetro, q é o codigo do usuario q recebeu a mensagem.
O problema é que os nomes que ele traz são do destinatário, e eu queria que um fosse do remetente e outro do destinatario, mas não sei como fazer.. se alguem souber e puder ajudar, fico grato.
Fernando Glizt
Curtir tópico
+ 0
Responder
Posts
22/06/2011
Wilson Junior
Teste assim:
Espero ter colaborado.
SELECT mensag.Codigo AS CodigoMensagem, mensag.Remetente AS CodigoRemetente, mensag.Destinatario AS CodigoDestinatario, mensag.Status, usur.Nome AS NomeRemetente, usud.Nome AS NomeDestinatario, mensag.Assunto, mensag.Msg FROM MENSAGEM mensag LEFT OUTER JOIN USUARIO usur ON (mensag.Remetente = usur.IdUsuario) LEFT OUTER JOIN USUARIO usud ON (mensag.Destinatario = usud.IdUsuario) WHERE mensag.Destinatario = :p
Espero ter colaborado.
Responder
Gostei + 0
22/06/2011
Fernando Glizt
exatamente, muito obrigado, colaborou muito.
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)