USUÁRIO:      SENHA:        SALVAR LOGIN ?    Adicione o VBWEB na sua lista de favoritos   Fale conosco 

 

  Fórum

  Visual Basic
Voltar
Autor Assunto:  If dentro de uma sql é possivel?
fcarlos
RIO DE JANEIRO
RJ - BRASIL
ENUNCIADA !
Postada em 23/03/2006 13:07 hs            
Caro Donkey,
 
Faça o seguinte.
Select decode(a.tipo_for, "C", b.Nome, c.Nome) 
from Tipo_Fornecedor a, Cad_Clientes b, Cad_Fornecedores c
 
O decode é como IF.
Se a.tipo for "C", exibe Nome do cliente
senão, exibie Nome do fornecedor.
 
Tente isso...
 
Abraços
 
 

Francisco Carlos Ferreira
Analista de Sistemas Junior
francisco.azeredo@gmail.com
   
Martini
Pontos: 2843 Pontos: 2843
PAROBÉ
RS - BRASIL
ENUNCIADA !
Postada em 23/03/2006 18:05 hs         
essa é uma das soluções:
 
 
set nocount on
create table #tipos
  (
   Tipo_Fornecedor varchar(1),
   Cod_Fornecedor integer
  )
create table #Cad_Clientes
  (
   codigo integer,
   nome varchar(30)
  )
create table #Cad_Fornecedores
  (
   codigo integer,
   nome varchar(30)
  )
insert into #Cad_Clientes (codigo, nome) values (1 , 'cliente 01')
insert into #Cad_Clientes (codigo, nome) values (3 , 'cliente 02')
insert into #Cad_Clientes (codigo, nome) values (4 , 'cliente 03')
insert into #Cad_Fornecedores (codigo, nome) values (2 , 'fornecedor 01')
insert into #Cad_Fornecedores (codigo, nome) values (5 , 'fornecedor 02')
insert into #tipos (Tipo_Fornecedor, Cod_Fornecedor) values ('C',1)
insert into #tipos (Tipo_Fornecedor, Cod_Fornecedor) values ('F',2)
insert into #tipos (Tipo_Fornecedor, Cod_Fornecedor) values ('C',3)
insert into #tipos (Tipo_Fornecedor, Cod_Fornecedor) values ('C',4)
insert into #tipos (Tipo_Fornecedor, Cod_Fornecedor) values ('F',5)

Select
 Tipo_Fornecedor,
 Cod_Fornecedor,
 #Cad_Clientes.codigo,
 #Cad_Clientes.nome
From #tipos
Inner Join #Cad_Clientes On #Cad_Clientes.codigo = Cod_Fornecedor
union all
Select
 Tipo_Fornecedor,
 Cod_Fornecedor,
 #Cad_Fornecedores.codigo,
 #Cad_Fornecedores.nome
From #tipos
Inner Join #Cad_Fornecedores On #Cad_Fornecedores.codigo = Cod_Fornecedor
drop table #tipos
drop table #Cad_Clientes
drop table #Cad_Fornecedores
   
jvlsm
SANTA MARIA
RS - BRASIL
ENUNCIADA !
Postada em 23/03/2006 18:17 hs            
Colega,
 
Acho meio complicada essa operação, por mais que você consiga de alguma forma
fazer isso atraves de SQL sera uma consulta muito pouco otimizada, com certeza
voce tera varios problemas de lentidao.
 
Aconselho voce a fazer um select com union de todos os dados, jogar para
uma consulta ou tabela temporaria e em cima disso fazer um novo select.
 
Por exemplo :
 
SELECT Codigo,Nome,Tipo FROM Fornecedores UNION SELECT Codigo,Nome,Tipo FROM Clientes.
 
Jogue esse resultado para uma tabela temporaria e dai faça um novo select em cima deste resultado, e uma boa alternativa....
 
Espero que tenha ajudado.
 
 

Juliano V. Londero
jvlsm@terra.com.br
   
Alexandre C.G
Pontos: 2843 Pontos: 2843
PATOS DE MINAS
MG - BRASIL
ENUNCIADA !
Postada em 24/03/2006 07:09 hs            
achei a solução do fcarlos legal, gostei.
   
Delcio (DelSf)
SANTO ANDRÉ
SP - BRASIL
ENUNCIADA !
Postada em 24/03/2006 07:30 hs         
Vc. pode usar o CASE:
CASE WHEN <campo + condição> THEN <ação> ELSE <ação2> END
   
Donkey
Pontos: 2843 Pontos: 2843 Pontos: 2843 Pontos: 2843
PRESIDENTE PRUDENTE
SP - BRASIL
ENUNCIADA !
Postada em 24/03/2006 11:52 hs            
Carlos, vou testar sua solução + tarde, se funcionar era exatamente o que eu precisava, muito obrigado.
Agora quanto a ficar lento só testando pra ver, + em outras ocasioes que tambem falaram "não faça isso que vai ficar lento", se ficou lento foi coisa de segundos (o que é praticamente um absurdo falar que ficou lento), ja fiz testes com quantidades imensas de registros e esse lento que o povo fala é coisa de segundos, então acho que vale a pena sim vc usar essas sql + complexas, do contrario pra que elas existiriam correto? Se fosse só o select * não teria essas outras funções igual a que o amigo passou. Obrigado a todos pela ajuda.
   
Página(s): 2/3     « ANTERIOR    PRÓXIMA »


Seu Nome:

Seu eMail:

ALTERAR PARA MODO HTML
Mensagem:

[:)] = 
[:P] = 
[:(] = 
[;)] = 

HTML DESLIGADO

     
 VOLTAR

  



CyberWEB Network Ltda.    © Copyright 2000-2024   -   Todos os direitos reservados.
Powered by HostingZone - A melhor hospedagem para seu site
Topo da página