Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Celamar

Join concatenado

Recommended Posts

Como faco para montar um select que me retorne os PAIS e os FILHOS concatendos, veja a estrutua das tabelas:tabela CONTATO:SEQ_CONTATNOME_CONTATExemplos:1, 'MARIA';2, 'JOSE';3, 'PEDRO';tabela CURSO:SEQ_CURSONOME_CURSOExemplos:1, 'JAVA'2, 'DELPHI'3, 'PHP'tabela CURSO_CONTATOSEQ_CONTATSEQ_CURSOExemplos:1, 11, 21, 32, 22, 33, 1Gosatria de montar um relatorio mais ou menos assim:Contato: MariaCursos: JAVA, DELPHI, PHPContato: JoseCursos: DELHI, PHPContato: Pedrocursos: JAVaE agora? Como fazer issso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

sem lógica???só com sql???

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu crio uma function que retorna uma string

 

CREATE OR REPLACE FUNCTION CURSOS ( pSEQ IN CONTATO.SEQ_CONTATO%TYPE)
  RETURN  VARCHAR2 IS

  Cursor c1 is Select NOME_CURSO 
			   From   CURSO_CONTATO CC,CURSO C
			   Where  CC.SEQ_CONTAT = PSEQ
			   AND	CC.SEQ_CURSO = C.SEQ_CURSO;
  Saida VARCHAR2(200);
BEGIN
	Saida:= ' ';
	FOR r1 In c1 LOOP
	  if Length(Saida) < 200 then
		Saida := saida || r1.NOME_CURSO;
	  end if;
	END LOOP;
	RETURN TRIM(Saida);	
END;
/

NUM SQL FICA SELECT CURSOS(12345) FROM DUAL

 

 

OU SEELCT CURSOS(NUM_SEQ) FROM CONTATO.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se estiver utilizando o Oracle 8i, faça:

 

SELECT a.nome_contat as "Nome", b.nome_curso as "Curso"

FROM Contato a, Curso b, Curso_Contato c

WHERE a.seq_contat=c.seq_contat and b.seq_curso=c.seq_curso;

Caso use o Oracle 9i, faça :

 

SELECT a.nome_contat as "Nome", b.nome_curso as "Curso"

FROM Contato a

INNER JOIN Curso_Contato c ON a.seq_contat=c.seq_contat

INNER JOIN Curso b ON b.seq_curso=c.seq_curso;

Agora só formatar o resultado no seu RELATORIO!

 

Abraços, http://forum.imasters.com.br/public/style_emoticons/default/grin.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.