Query SQL Server

7 respostas
jMarcel

Pessoal,

a partir dessa tabela…

codCli	nome	endereco	telefone	codLider
1111	jaja	r abc n 1	 2222-1111	1111
2222	jeje	r abc n 2	 2222-2222	2222
3333	jiji	r abc n 3	 2222-3333	1111
4444	jojo	r abc n 4	 2222-4444	1111
5555	juju	r abc n 5	 2222-5555	2222
6666	jane	r abc n 6	 2222-6666	6666
7777	jona	r abc n 7	 2222-7777	6666
8888	joao	r abc n 8	 2222-8888	7777
9999	jose	r abc n 9	 2222-9999	2222
1010	jeca	r abc n 9	 2222-9999	7777

…quero gerar essa:

codCli	nome	endereco	telefone	codLider	descricao	nomeLider	codLider
1111	jaja	r abc n 1	 2222-1111	1111	 Líder	           jaja	    1111
2222	jeje	r abc n 2	 2222-2222	2222	 Líder	           jeje	    2222
3333	jiji	r abc n 3	 2222-3333	1111	 Associado	       jaja	    1111
4444	jojo	r abc n 4	 2222-4444	1111	 Associado	       jaja	    1111
5555	juju	r abc n 5	 2222-5555	2222	 Associado	       jeje	    2222
6666	jane	r abc n 6	 2222-6666	6666	 Líder	           jane	    6666
7777	jona	r abc n 7	 2222-7777	6666	 Associado	       jane	    6666
8888	joao	r abc n 8	 2222-8888	7777	 Líder	           joao	    7777
9999	jose	r abc n 9	 2222-9999	2222	 Associado	       jeje	    2222
1010	jeca	r abc n 9	 2222-9999	7777	 Associado	       joao	    7777

Qual seria uma possível query para isso?

Obrigado.

7 Respostas

JavaThai

Join.

jMarcel

Ola. seu palpite está correto, mas o que eu quero é uma query pronta para comparar com a minha.

C

Query pronta para “comparar” ?? Não seria mais fácil você postar a sua e olharmos?

douglascst90
select a.codCli,
         a.nome,
         a.endereco,
         a.telefone,
         a.codLider,
         b.descricao,
         b.nomeLider,
         b.codLider

from tabela1 a, tabela2 b

where a.codLider = b.codLider

Pela estrutura da tabela acho que é isso.

Não vai se acostumando com codigos pronto, so fiz isso pq é simple :(

jMarcel
douglascst90:
select a.codCli,
         a.nome,
         a.endereco,
         a.telefone,
         a.codLider,
         b.descricao,
         b.nomeLider,
         b.codLider

from tabela1 a, tabela2 b

where a.codLider = b.codLider

Pela estrutura da tabela acho que é isso.

Não vai se acostumando com codigos pronto, so fiz isso pq é simple :(

Ah, tá. Então quer dizer você só fez por que achou fácil, é? :!:
Pois saiba que você está enganado, pois não é tão simples assim como você pensa (tanto é que a sua solução está incorreta para este problema).

E sem querer te ofender, tome isso como feedback:
- Procure ser mais humilde em seus comentários, pois a impressão que você me passou é como se você fosse o 'dono da Verdade'. :wink:

Veja a minha solução e tente construir uma mais performática, já que a tabela a ser consultada tem +-500milhões de linhas. :shock:

Até breve.

WITH CTE AS (
SELECT DISTINCT codLider as codLider,
		nome as nome
FROM myTable
WHERE codCli=codLider
)
	select distinct  x.codCli
			,x.Nome
			,x.Endereço
			,x.Telefone
			,x.codLider
			,case when x.MCI=x.Lider then 'Lider' else 'Associado' end AS DescricaoMembro
			,case when x.codCli=x.codLider then x.Nome else y.Nome end AS NomeLider
	FROM myTable x full outer join CTE y on x.codLider=y.codLider
jMarcel

Eu não fui muito claro: o problema não é apenas criar a query. Mas uma que seja mais performática do que a que eu já criei (vide abaixo), visto que a tabela a ser consultada tem ± 500 milhões de linhas. :shock:

Obs.: eu imagino que você não quis postar a sua de imediato para me surpreender em seguida, não é? :?:

WITH CTE AS (
SELECT DISTINCT codLider as codLider,
		nome as nome
FROM myTable
WHERE codCli=codLider
)
	select distinct  x.codCli
			,x.Nome
			,x.Endereço
			,x.Telefone
			,x.codLider
			,case when x.MCI=x.Lider then 'Lider' else 'Associado' end AS DescricaoMembro
			,case when x.codCli=x.codLider then x.Nome else y.Nome end AS NomeLider
	FROM myTable x full outer join CTE y on x.codLider=y.codLider
douglascst90

Desculpe se passei essa imagem a você, não foi essa a minha intenção, minha intenção era apenas ajuda-lo. :wink:

Ja que voce leu as regras do forum, deve ter percebido que não se faz perguntas como a sua, partindo do zero e procurando por soluções completas. Pelo fato de voce procurar a solução completa partindo do zero, disse aquilo na minha resposta.

Pois bem, pesquisei no GUJ e nao encontrei nada relacionado a SQL Server(comparado ao seu problema), peço que pesquise no google forum relacionados a SQL Server e SQL que voce encontrara respostas mais rápidas para o seu problema. Ok?!

Abraços e boa sorte! :wink:

Criado 5 de novembro de 2012
Ultima resposta 6 de nov. de 2012
Respostas 7
Participantes 4