[firebase-br] Select retornonado histórico de conversa

Marlon Conceição marlon em esferati.com.br
Ter Dez 13 17:29:48 -03 2011


Muito obrigado pela ajuda realmente era isso!

\o/

 

From: Wilson Rosa [mailto:wsrosa em gmail.com] 
Sent: terça-feira, 13 de dezembro de 2011 17:15
To: marlon em esferati.com.br; FireBase
Subject: Re: [firebase-br] Select retornonado histórico de conversa

 

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