[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