Unir três tabelas SQL  XML
Índice dos Fóruns » Persistência: Hibernate, JPA, JDBC e outros
Autor Mensagem
SanchesMatheus
Smalltalk

Membro desde: 02/02/2012 15:27:59
Mensagens: 3
Offline

Boa Tarde. Sou novo no forum e estou com uma grande duvida.

No cliente que trabalho estou precisando unir tres tabelas em uma unica saida.

Seriam elas:
tbcolab -- Colunas: IDPESSOA, IDCOLAB, CODIMATR
tbpessoa -- Colunas: IDPESSOA, NOMEPES
tbhistocrach -- Colunas: IDCOLAB, ICARD

Na tabela TBHISTOCRACH podem ter varios registros. Com isso eu preciso pegar com a coluna DATAINI mais atual.

Se alguem poder me ajudar ficarei muito grato.

Agradeço desde já!

This message was edited 1 time. Last update was at 02/02/2012 15:42:26

michelorth_92
JavaEvangelist
[Avatar]

Membro desde: 11/10/2011 10:23:41
Mensagens: 328
Offline

pesquise por winner join voce consegue fazer isto com sql
FabricioPJ
JavaEvangelist
[Avatar]

Membro desde: 13/05/2007 21:26:57
Mensagens: 317
Localização: Belém - PA / Santo André - SP
Offline

Creio que ficaria assim:

join da tabela TBPESSOA(IDPESSOA) com a tabela TBCOLAB(IDPESSOA)
join da tabela TBCOLAB(IDCOLAB) com a tabela TBHISTOCRATH(IDCOLAD)
buscando também pelo MAX(DATAINI)



Bacharel em Ciência da Computação (CESUPA)

Oracle 11g Certified SQL Expert
Oracle 11g Certified Associate
Linux Professional Institute Certified (LPIC-I)

--LinkedIn--
http://br.linkedin.com/in/fabriciojorge
michelorth_92
JavaEvangelist
[Avatar]

Membro desde: 11/10/2011 10:23:41
Mensagens: 328
Offline

SELECT * FROM tab1
INNER JOIN tab2 ON (tab1.campo = tab2.campo)
INNER JOIN tab3 ON (tab3.campo = tab2.campo)
WHERE tab1.campo = 'valor'
SanchesMatheus
Smalltalk

Membro desde: 02/02/2012 15:27:59
Mensagens: 3
Offline

Pessoal,

Obrigado pela ajuda ! Conforme voces falaram eu consegui fazer funcionar.

Mas sempre tem um ''Porem" e é nele que fiquei de mãos atadas.

Me deparei com o seguinte problema:

Na tabela TBHISTOCRACH tem os campos DATAINI/HORAINI e DATAFINA/HORAFINA. Na tabela que preciso pegar os acessos de cada pessoa (TBMARCACESS) tem os campos DATAACES/HORAACES.
Com base na data e hora do acesso, preciso que o resultado seja um valor entre a TBHISTOCRACH.DATAINI/HORAINI e TBHISTOCRACH.DATAFINA/HORAFINA.

Acredito que este seja um grande problema. Não tenho nem ideia se isso realmente é possivel.

Agradeço a ajuda de todos.

Abraços!
SanchesMatheus
Smalltalk

Membro desde: 02/02/2012 15:27:59
Mensagens: 3
Offline

Pessoa,

Com muita luta eu consegui fazer funcionar. Para quem precisar um dia:

SELECT * FROM tbpessoa
INNER JOIN tbcolab ON (tbpessoa.idpessoa = tbcolab.idpessoa)
INNER JOIN tbhistocrach ON (tbhistocrach.idcolab = tbcolab.idcolab)
inner join tbmarcaacess on (tbhistocrach.icard = tbmarcaacess.icard and tbhistocrach.datainic > tbmarcaacess.dataaces and tbhistocrach.datafina < tbmarcaacess.dataaces)
where tbhistocrach.stathist = 1
order by dataaces desc

O que que eu fiz. Eu peguei o valor da data de marcação e falei que ele teria que ser entre o valor de data inicio e data fim.
michelorth_92
JavaEvangelist
[Avatar]

Membro desde: 11/10/2011 10:23:41
Mensagens: 328
Offline

pra fazer com intervalo de datas voce pode fazer assim

FROM tabela WHERE DataInicial BETWEEN '" + data1 + "' AND '" + data2 + "'"
 
Índice dos Fóruns » Persistência: Hibernate, JPA, JDBC e outros
Ir para:   
Powered by JForum 2.1.8 © JForum Team