Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   comienzos en sql (https://www.clubdelphi.com/foros/showthread.php?t=43002)

Patricio 27-04-2007 22:09:19

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?

Caral 27-04-2007 22:18:28

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

Patricio 27-04-2007 22:28:43

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

maeyanes 27-04-2007 22:43:24

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...

Caral 27-04-2007 23:08:01

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

roman 27-04-2007 23:27:41

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

ContraVeneno 28-04-2007 02:07:46

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 :D

LordRiper 28-04-2007 02:16:00

Yo tuve esta situacion hace tiempo, y lo del Union no fonuncio, porque? sabra dios, lo solucione con un procedimiento igual al de maeyanes

hach 28-04-2007 03:10:33

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...

xander 28-04-2007 03:44:54

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 :D

Es igual en firebird desde la version 1.5...:)

maeyanes 28-04-2007 03:48:41

Cita:

Empezado por xander
Es igual en firebird desde la version 1.5...:)

Pero el está usando Interbase 6... :)

xander 28-04-2007 04:46:26

Cita:

Empezado por maeyanes
Pero el está usando Interbase 6... :)

Si, lo vi... pero es un anzuelo.. a ver si lo muerde :D

Patricio 28-04-2007 16:26:04

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.


La franja horaria es GMT +2. Ahora son las 04:22:54.

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