Select Sql Server 2000 Union

4 respostas
F

Bom dia Pessoal,

Esse é o meu select

SELECT
		TE.CLIMINARES, LI.RLIMINARES, SELECIONADO = 'ü'
	FROM 
		TLIMINARES LI 
	INNER JOIN 
		#TEMPLIMINARES TE 
	ON 
		TE.CLIMINARES = LI.CLIMINARES

	UNION

	select climinares, rliminares, selecionado = '' from tliminares

O resultado é o seguinte

1 Teste1
1 Teste1 ü
2 Teste2
2 Teste2 ü
3 TESTE3

como vcs viram ele repete o teste1 e o teste2…
Eu gostaria de retornar apenas o teste1 e teste2 onde o selecionado = ‘ü’ e o teste3 viria selecinado = ‘’

Alguém pode me ajudar???

Att,

Allan Furlani

4 Respostas

drsmachado

1 - Leia http://guj.com.br/java/50115-voce-e-novo-no-guj-vai-criar-um-topico-e-colar-seu-codigo-fonte-leia-aqui-antes-por-favor. Tente usar o distinct.

F
SELECT DISTINCT
            TE.CLIMINARES, LI.RLIMINARES, SELECIONADO = 'ü' 
       FROM 
            TLIMINARES LI 
       INNER JOIN 
            #TEMPLIMINARES TE 
       ON 
            TE.CLIMINARES = LI.CLIMINARES 

UNION 

      SELECT DISTINCT
                 CLIMINARES, RLIMINARES SELECIONADO = ' ' ]
       FROM 
                 TLIMINARES

Vlw pela dica sobre a formatação…

então mesmo com o distinct ele continua a mesma cosia

F

Vlw pela ajuda…

Consegui fazer de uma outra forma

eu fiz o seguinte
Criei uma outra tabela auxiliar e inseri todos os registros da tabela.
E a outra tabela continha apenas os registros com o selecionado = 'ü’
Fiz um UPDATE na tabela Auxiliar de selecionado = ‘’ para selecionado = ‘ü’ onde contenha o código nas duas tabelas…

INSERT INTO #TEMPLIMINARESAUX (CLIMINARES, RLIMINARES)
		SELECT CLIMINARES, RLIMINARES FROM TLIMINARES

		UPDATE #TEMPLIMINARESAUX 
		SET #TEMPLIMINARESAUX.SELECIONADO  = #TEMPLIMINARES.SELECIONADO
		FROM #TEMPLIMINARESAUX, #TEMPLIMINARES
		WHERE #TEMPLIMINARESAUX.CLIMINARES = #TEMPLIMINARES.CLIMINARES

Ou seja…

mudou completamente da idéia inicial e ficou uma gambiarra mortal…
Mas funcionou!!!
caso eu pense em outra coisa eu posto… ow se alguém tiver outra idéia…

Vlww!!!

A

Desculpa ir chegando já depois que você resolveu, mas… estou com um palpite e veja se estaria correto: você tem a tabela TLIMINARES quer verificar se há registros nela que possuam ou não registros relacionados na #TEMPLIMINARES, é isso? Se sim, usando um select só com OUTER JOIN já resolveria… ficaria assim:

select LI.CLIMINARES
,        LI.RLIMINARES
,        TE.CLIMINARES
FROM TLIMINARES LI
OUTER LEFT JOIN #TEMPLIMINARES TE
ON LI.CLIMINARES = TE.CLIMINARES

No caso, se existir um registro em TLIMINARES que não possua correspondente em #TEMPLIMINARES, o campo TE.CLIMINARES declarado no select exibirá nulo.
Foi o que entendi do seu problema. Desculpe se não tiver nada a ver…

Criado 27 de maio de 2011
Ultima resposta 27 de mai. de 2011
Respostas 4
Participantes 3