Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 27-04-2007
Patricio Patricio is offline
Miembro
 
Registrado: jul 2004
Posts: 433
Poder: 20
Patricio Va por buen camino
Exclamation comienzos en sql

Gente leyendo un poco en el foro se me ocurrio una consulta que quisiera saber si es posible hacer, suponiendo que tenga una tabla con 3 campos
Tipo, Apellido, RazonSocial
Como puedo hacer para que si Tipo = 1 devuelva Apellido y si tipo = 2 devuelva Razon Social?
Responder Con Cita
  #2  
Antiguo 27-04-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola Patricio
Te lo digo como comentario, es bueno siempre especificar que base de datos usas asi, nos enteramos mejor y podemos enfatizar en el problema, bueno los maestros pueden, yo trato.
Estaba haciendo algo y se me presento una duda.
Tipo, Apellido, RazonSocial
Haces alguna diferenciacion en la tabla?
Saludos
Responder Con Cita
  #3  
Antiguo 27-04-2007
Patricio Patricio is offline
Miembro
 
Registrado: jul 2004
Posts: 433
Poder: 20
Patricio Va por buen camino
disculpa

Uso Delphi5 e Interbase6, la idea es guardar en una misma tabla a personas y Empresas, si es una persona se Carga el Campo Apellido y Nombre y si es una Empresa se carga el Campo Razon Social, todo en la misma tabla, y mi consulta es como poder mostrar el apellido y nombre cuando es una persona (Tipo = 1) ola Razon Social (cuando Tipo = 2) todo en la misma grilla, hoy lo estoy manejando en tablas distintas pero quiero saber si es posible hacer esta consulta y si el tiempo de respuesta es mayor/menor comparado a tener los datos en 2 tablas distintas y hacer un sql con la union de las dos.
Gracias y espero no haberte confundido
Responder Con Cita
  #4  
Antiguo 27-04-2007
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 24
maeyanes Va por buen camino
Así a bote pronto... podrías hacer un store procedure:

Código SQL [-]
create procedure Clientes
returns(
nombre varchar(100)
)
as
begin
  for
    select apellido from tabla where tipo = 1 into :nombre
  do
    suspend;
  for
    select razonsocial from tabla where tipo = 2 into :nombre
  do
    suspend;
end;

Modo de uso:

Código SQL [-]
select * from Clientes order by nombre

Es solo una idea y es lo primero que se me ocurrió... espero te sirva...


Saludos...
Responder Con Cita
  #5  
Antiguo 27-04-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
La opcion del maestro maeyanes es muy buena, diria exepcional, pero a mi me salen como buen novato mas dudas.
Me dices primero que tienes tres campos:
Tipo, Apellido, RazonSocial
Y luego dices que dos, no se como esta el asunto, pero me imagino que los mas simple es:
Ejemplito:
Tipo, Apellido, RazonSocial
1.......Ramirez
1.......Perez
2..................Almacen X
2..................Panificadora X
Saludos
Responder Con Cita
  #6  
Antiguo 27-04-2007
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Supongo- no lo he probado -que también puede usarse una union

Código SQL [-]
select tipo, apellido as nombre from tabla where tipo = 1

union

select tipo, razonsocial as nombre from tabla where tipo = 2

// Saludos
Responder Con Cita
  #7  
Antiguo 28-04-2007
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
Código SQL [-]
Select case when tipo=1 then apellido when tipo=2 then razonsocial en Campo
from tu tabla

Eso es en SQL server, no se si sea lo mismo para Interbase
__________________

Responder Con Cita
  #8  
Antiguo 28-04-2007
Avatar de LordRiper
LordRiper LordRiper is offline
Miembro
 
Registrado: mar 2007
Posts: 22
Poder: 0
LordRiper Va por buen camino
Yo tuve esta situacion hace tiempo, y lo del Union no fonuncio, porque? sabra dios, lo solucione con un procedimiento igual al de maeyanes
__________________
-- Salim Giacoman --
Torreon, Coahuila, Mx
giacoman_salim@hotmail.com


“Entre más aprendo, más quiero saber.
Entre más sé, más quiero aprender"
Responder Con Cita
  #9  
Antiguo 28-04-2007
hach hach is offline
Miembro
 
Registrado: mar 2007
Ubicación: Bariloche, Argentina
Posts: 44
Poder: 0
hach Va por buen camino
y con un solo campo?

La solucion de contraveneno deberia funcionar, pero pregunto yo, para que tienes 2 campos diferentes(apellido y razon soc)? sin con uno solo te alcanzaria? No veo la utilidad...
Responder Con Cita
  #10  
Antiguo 28-04-2007
Avatar de xander
xander xander is offline
Miembro
 
Registrado: jul 2006
Posts: 499
Poder: 18
xander Va por buen camino
Cita:
Empezado por ContraVeneno
Código SQL [-]
Select case when tipo=1 then apellido when tipo=2 then razonsocial end Campo
from tu tabla

Eso es en SQL server, no se si sea lo mismo para Interbase
Es igual en firebird desde la version 1.5...
__________________
"Hey, nena, debe ser genial ser tú y verme a mí mismo..."
Responder Con Cita
  #11  
Antiguo 28-04-2007
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 24
maeyanes Va por buen camino
Cita:
Empezado por xander
Es igual en firebird desde la version 1.5...
Pero el está usando Interbase 6...
Responder Con Cita
  #12  
Antiguo 28-04-2007
Avatar de xander
xander xander is offline
Miembro
 
Registrado: jul 2006
Posts: 499
Poder: 18
xander Va por buen camino
Cita:
Empezado por maeyanes
Pero el está usando Interbase 6...
Si, lo vi... pero es un anzuelo.. a ver si lo muerde
__________________
"Hey, nena, debe ser genial ser tú y verme a mí mismo..."
Responder Con Cita
  #13  
Antiguo 28-04-2007
Patricio Patricio is offline
Miembro
 
Registrado: jul 2004
Posts: 433
Poder: 20
Patricio Va por buen camino
muchas gracias

Gente en realidad les agradezco a todos los mensajes, voy a hacer unas pruebas. Lo de el procedure? soy nuevo en eso, donde se ejecuta realmente en la pc local o en el server que ventajas tiene o desventajas con respecto a una vista.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Sus comienzos con la informática... DarkByte Debates 39 22-11-2007 17:52:57
...comienzos difíciles... Jure Humor 0 07-05-2004 19:59:20


La franja horaria es GMT +2. Ahora son las 11:24:36.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi