Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 17-08-2012
MartinS MartinS is offline
Miembro
NULL
 
Registrado: nov 2011
Ubicación: Villa Cacique - Argentina
Posts: 283
Poder: 13
MartinS Va por buen camino
Necesito consulta que modifique resultados. Tipo Case

Hola: Bueno, muy bien no sabia que titulo poner asi que pido disculpas a quien ingresara pensando que era otra cosa
El tema es el siguiente: hago una consulta que relaciona cuatro tablas mediante inner join, que si bien funciona, desearía que me mostrara un determinado campo (Situacion) de otra forma ya que estos se exportan a excel y requiere otro tipo de "nomenclatura".

La consulta es esta:

Código Delphi [-]
       With Dm.VerTrabajos do
       Begin
           Close;
           Sql.Clear;
           Sql.Add('Select Internos.Id,Apellidos,Nombres,Situacion, Trabajadores.*,');
           Sql.Add('Sectores.*,Rubros.* From Internos ');
           Sql.Add('Inner Join Trabajadores on Trabajadores.IdInt = Internos.Id');
           Sql.Add('Inner Join Sectores on Trabajadores.IdSector = Sectores.Id');
           Sql.Add('Inner Join Rubros on Trabajadores.IdRubro = Rubros.Id');
           Sql.Add('Where Trabajadores.Activo = '+QuotedStr('Si')+' and Sectores.NomSector = :Nombre');
           SQL.Add('Order by Sectores.NomSector');
           ParamByName('Nombre').AsString := CSector.Items.Strings[CSector.ItemIndex];
           Open;
       end;

donde el campo Situacion de la tabla internos originalmente guarda procesado, penado o detenido y necesitaria que me devuelva 0,1 o 2.
¿Como se hace?. ¿Me podrian ayudar?
Gracias
Saludos.-
Responder Con Cita
  #2  
Antiguo 17-08-2012
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Hola MartinS, prueba de esta forma:

Código SQL [-]
Select Internos.Id,....., Case Situacion When 'procesado' then 0
                                         When 'penado' then 1
                                         When 'detenido' then 2 end, Trabajadores.*,
........................................
From Internos
.....................................................
....................................................

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #3  
Antiguo 17-08-2012
Avatar de Cañones
Cañones Cañones is offline
Miembro
 
Registrado: ene 2007
Ubicación: La Paz Entre Ríos
Posts: 354
Poder: 18
Cañones Va por buen camino
Hola MartinS, yo lo que haría es al dataset Sql agregarle un campo calculado cuando la situación es procesado tome el valor cero y así para los otros campos.
Creo que es lo mejor, trasladar esa lógica al cliente, porque de otra manera sería hacer tres union en el sql pero no me gusta mucho.
Saludos.
Responder Con Cita
  #4  
Antiguo 17-08-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
La solución es la que ha puesto Caro
Responder Con Cita
  #5  
Antiguo 17-08-2012
Avatar de Cañones
Cañones Cañones is offline
Miembro
 
Registrado: ene 2007
Ubicación: La Paz Entre Ríos
Posts: 354
Poder: 18
Cañones Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
La solución es la que ha puesto Caro
Todavía no lo probé pero está muy bueno. Yo lo hacia con tres union o con campos calculados.
Todos los días se aprende algo acá.
Gracias.
Responder Con Cita
  #6  
Antiguo 17-08-2012
MartinS MartinS is offline
Miembro
NULL
 
Registrado: nov 2011
Ubicación: Villa Cacique - Argentina
Posts: 283
Poder: 13
MartinS Va por buen camino
Cita:
Empezado por Caro Ver Mensaje
Hola MartinS, prueba de esta forma:

Código SQL [-]
Select Internos.Id,....., Case Situacion When 'procesado' then 0
                                         When 'penado' then 1
                                         When 'detenido' then 2 end, Trabajadores.*,
........................................
From Internos
.....................................................
....................................................

Saluditos
Gracias Caro. Precisamente eso era lo que buscaba. . En un momento te iba a preguntar ya que no me arrojaba ningún dato entonces puse un dbgrid en crudo y ahí me percate que me había cambiado el nombre de campo a CASE.

Gracias nuevamente.-

Cita:
Empezado por Cañones Ver Mensaje
Hola MartinS, yo lo que haría es al dataset Sql agregarle un campo calculado cuando la situación es procesado tome el valor cero y así para los otros campos.
Creo que es lo mejor, trasladar esa lógica al cliente, porque de otra manera sería hacer tres union en el sql pero no me gusta mucho.
Saludos.
Gracias Cañones. El hecho es que uso ese query para diferentes consultas de modo que no puedo agregar campos con el editor (Boton derecho arriba del IbQuery). Mucho menos lo agregaria por código pues no sé como se hace
Gracias igualmente por la respuesta.-
Responder Con Cita
  #7  
Antiguo 17-08-2012
MartinS MartinS is offline
Miembro
NULL
 
Registrado: nov 2011
Ubicación: Villa Cacique - Argentina
Posts: 283
Poder: 13
MartinS Va por buen camino
Cita:
Empezado por Cañones Ver Mensaje
Todavía no lo probé pero está muy bueno. Yo lo hacia con tres union o con campos calculados.
Todos los días se aprende algo acá.
Gracias.
Por las uniones una vez de desaprobo mi profe de matematica aplicada por lo que pienso no usarlo jamas !!! .

Gracias y saludos
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Between en Case de una Consulta DasGrun SQL 3 21-05-2011 19:24:42
Consulta con LIKE es case sensitive? Faust SQL 10 17-06-2008 22:47:21
Diferenciar (tipo case) una cadena torito Varios 2 04-06-2004 19:03:39
una consulta case ? Jorge Taveras Firebird e Interbase 6 27-04-2004 22:53:21
Consulta sin resultados!!!! Giniromero Conexión con bases de datos 8 03-10-2003 14:17:41


La franja horaria es GMT +2. Ahora son las 15:14:21.


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