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
|
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.
|
|
|
|
Postada em 24/03/2006 07:09 hs
achei a solução do fcarlos legal, gostei.
|
|
|
|
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
|
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.
|
|
|
|