[firebase-br] Select retornonado histórico de conversa
Wilson Rosa
wsrosa em gmail.com
Ter Dez 13 17:15:28 -03 2011
Marlon,
basta fazer joins com as tabelas relacionadas, como você tem 2 campos
co_usuario_xxxx, é preciso fazer 2 relacionamentos distintos com a
tb_usuario
select
m.co_mensagem_usuario as CoMensagem,
*uo*.no_usuario as Origem,
*ud*.no_usuario as Destino,
t.ds_tp_mensagem as tpMensagem,
m.ds_mensagem as Mensagem,
m.dt_mensagem as Data,
m.hs_mensagem as Hora
from
tb_mensagem_usuario m
inner join tb_tp_mensagem t on (t.co_tp_mensagem = m.co_tp_mensagem)
* inner join tb_usuario uo on (uo.co_usuario = m.co_usuario_origem)*
* inner join tb_usuario ud on (ud.co_usuario = m.co_usuario_destino)*
where
m.co_usuario_origem = 1
Espero que isto ajude.
*Wilson Rosa*
Desenvolvedor Desk
*wsrosa em gmail.com
*
*
*
Em 13 de dezembro de 2011 16:17, Marlon Conceição
<marlon em esferati.com.br>escreveu:
> Boa noite senhores
>
> Estou criar dentro de um sistema que estou desenvolvendo uma sessão de
> mensagens apenas para informações rápidas entre os usuários do sistema.
> Para isso 3 tabelas foram criadas:
>
> TB_MENSAGEM_USUARIO
>
> CREATE TABLE TB_MENSAGEM_USUARIO (
> CO_MENSAGEM_USUARIO INTEGER NOT NULL,
> CO_TP_MENSAGEM INTEGER,
> DS_MENSAGEM VARCHAR(255),
> CO_USUARIO_ORIGEM INTEGER,
> CO_USUARIO_DESTINO INTEGER,
> DT_MENSAGEM DATE,
> HS_MENSAGEM TIME
> );
> ALTER TABLE TB_MENSAGEM_USUARIO ADD CONSTRAINT PK_TB_MENSAGEM_USUARIO
> PRIMARY KEY (CO_MENSAGEM_USUARIO);
>
> ALTER TABLE TB_MENSAGEM_USUARIO ADD CONSTRAINT FK_CO_TP_MENSAGEM FOREIGN
> KEY
> (CO_TP_MENSAGEM) REFERENCES TB_TP_MENSAGEM (CO_TP_MENSAGEM) ON DELETE
> CASCADE ON UPDATE CASCADE;
> ALTER TABLE TB_MENSAGEM_USUARIO ADD CONSTRAINT FK_CO_USUARIO_DESTINO
> FOREIGN
> KEY (CO_USUARIO_DESTINO) REFERENCES TB_USUARIO (CO_USUARIO) ON DELETE
> CASCADE ON UPDATE CASCADE;
> ALTER TABLE TB_MENSAGEM_USUARIO ADD CONSTRAINT FK_CO_USUARIO_ORIGEM FOREIGN
> KEY (CO_USUARIO_ORIGEM) REFERENCES TB_USUARIO (CO_USUARIO) ON DELETE
> CASCADE
> ON UPDATE CASCADE;
>
>
> TB_TP_MENSAGEM
>
> CREATE TABLE TB_TP_MENSAGEM (
> CO_TP_MENSAGEM INTEGER NOT NULL,
> DS_TP_MENSAGEM VARCHAR(50)
> );
> ALTER TABLE TB_TP_MENSAGEM ADD CONSTRAINT PK_TB_TP_MENSAGEM PRIMARY KEY
> (CO_TP_MENSAGEM);
>
>
> TB_USUARIO
>
> CREATE TABLE TB_USUARIO (
> CO_USUARIO INTEGER NOT NULL,
> NO_USUARIO VARCHAR(150) NOT NULL,
> DS_LOGIN VARCHAR(12) NOT NULL,
> DS_SENHA VARCHAR(12),
> DS_NIVEL CHAR(1)
> );
> ALTER TABLE TB_USUARIO ADD CONSTRAINT PK_TB_USUARIO PRIMARY KEY
> (CO_USUARIO);
>
> Estou tentando retornoar as informações da tabela TB_MENSAGEM_USUARIO de
> duas formas:
>
> select
> m.co_mensagem_usuario as CoMensagem,
> u.no_usuario as Origem, u.no_usuario as Destino,
> t.ds_tp_mensagem as tpMensagem,
> m.ds_mensagem as Mensagem,
> m.dt_mensagem as Data,
> m.hs_mensagem as Hora
> from
> tb_mensagem_usuario m, tb_tp_mensagem t, tb_usuario u
> where
> m.co_usuario_origem = u.co_usuario
> and m.co_usuario_destino = u.co_usuario
> and m.co_tp_mensagem = t.co_tp_mensagem
> and m.co_usuario_origem = 1
>
> e
>
> select
> m.ds_mensagem, m.dt_mensagem, m.hs_mensagem,
> (select t.ds_tp_mensagem from tb_tp_mensagem t, tb_mensagem_usuario m
> where m.co_tp_mensagem = t.co_tp_mensagem) as tipo_mensagem,
> (select u.no_usuario from tb_mensagem_usuario m, tb_usuario u
> where m.co_usuario_origem = u.co_usuario) as usuario_origem,
> (select u.no_usuario from tb_mensagem_usuario m, tb_usuario u
> where m.co_usuario_destino = u.co_usuario) as usuario_destino
> from
> tb_mensagem_usuario m, tb_tp_mensagem t, tb_usuario u
> where u.co_usuario = 1
>
> Todavia não estou obtendo nenhum sucesso alguem poderia esclarecer onde
> estou errando?
>
> Agradeço desde já pela ajuda de todos!
>
> Marlon ETI
> marlon em esferati.com.br
>
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>
Mais detalhes sobre a lista de discussão lista