[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