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 24-10-2011
Avatar de orioncomputer
orioncomputer orioncomputer is offline
Miembro
 
Registrado: may 2006
Ubicación: Maturin, Monagas, Venezuela
Posts: 18
Poder: 0
orioncomputer Va por buen camino
Saludos Alej.villa

No soy muy experto en programación en delphi, pero si se como se realiza la consulta SQL que deseas, te detallo un ejemplo y luego tu lo condicionas al DM que desees, ahora bien no entiendo el porque tienes que hacer la consulta por etapas, pero bueno yo te mostrare un ejemplo de como consultas directamente preguntando a la tabla por las tres variables de una vez, pienso que si tu objetivo final es la ultima consulta porque no reducir las 2 o 3 consultas previas a una sola.

Acá te detallo la Consulta
Código SQL [-]
SELECT  A.Cedula, B.Cedula
FROM  Empleado AS A INNER JOIN
    Turno_Temporal AS B ON A.Cedula = B.Cedula AND A.Turno = B.Turno_Temp
GROUP BY A.Cedula, B.Cedula
HAVING  (A.Cedula = 'CCCC') AND (B.Estado = 'EEEEE') AND (B.Turno_Temp = 'TTTTT')

Como veras los Campos con las "C", "E" y "T", deben ser reemplazados en tu consulta por las variables que tienes.
Bueno de no entender, por acá estamos a la orden
Responder Con Cita
  #2  
Antiguo 25-10-2011
Avatar de alej.villa
alej.villa alej.villa is offline
Miembro
NULL
 
Registrado: may 2011
Ubicación: Caracas, Venezuela
Posts: 76
Poder: 13
alej.villa Va por buen camino
Cita:
Empezado por orioncomputer Ver Mensaje
Saludos Alej.villa
pienso que si tu objetivo final es la ultima consulta porque no reducir las 2 o 3 consultas previas a una sola.

Acá te detallo la Consulta
Código SQL [-]
SELECT    A.Cedula, B.Cedula 
FROM    Empleado AS A INNER JOIN         
Turno_Temporal AS B ON A.Cedula = B.Cedula AND A.Turno = B.Turno_Temp 
GROUP BY A.Cedula, B.Cedula 
HAVING    (A.Cedula = 'CCCC') AND (B.Estado = 'EEEEE') AND (B.Turno_Temp = 'TTTTT')


Como veras los Campos con las "C", "E" y "T", deben ser reemplazados en tu consulta por las variables que tienes.
Bueno de no entender, por acá estamos a la orden
Buen día orioncomputer
quiero hacer exáctamente eso que tu dices en tu mensaje, en vez de realizar 2 ó 3 consultas quiero hacer una sola.
Según entiendo de tu código SQL el me filtraría todas las cédulas que sean iguales en las dos tablas (Empleados y Turno_Temporal) cierto? de ser esto cierto la consulta no es la correcta puesto que necesito todas las cédulas de la tabla empleados y de la tabla tabla Turno_Temporal que coincidan con el turno (Que es seleccionado por el usuario).
Responder Con Cita
  #3  
Antiguo 26-10-2011
Avatar de alej.villa
alej.villa alej.villa is offline
Miembro
NULL
 
Registrado: may 2011
Ubicación: Caracas, Venezuela
Posts: 76
Poder: 13
alej.villa Va por buen camino
Sigo con el problema

Buen día amigos del clubdelphi

he intentado hacer de todo tipo de consulta que me resuelva mi problematica, pero no logró dar con la solución
¿será que alguien puede ayudarme?

PD: Es lo único que me falta para terminar mi sistema.

¡Gracias de antemano!
Responder Con Cita
  #4  
Antiguo 26-10-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.044
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
¿Y cual es el problema?
Responder Con Cita
  #5  
Antiguo 26-10-2011
Avatar de alej.villa
alej.villa alej.villa is offline
Miembro
NULL
 
Registrado: may 2011
Ubicación: Caracas, Venezuela
Posts: 76
Poder: 13
alej.villa Va por buen camino
Que quiero consultar dos tablas cuyo campo en común es la cédula, pero necesito todas las cédulas de las dos tablas cuándo el turno sea igual al indicado por el usuario.
Responder Con Cita
  #6  
Antiguo 26-10-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.044
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Sí, ¿pero no te sirve la ayuda que te han dado?, ¿no hacen lo que quieres?, exactamente ¿en qué difieren de lo que necesitas?.
Si lo ves necesario escribe aquí nombres de las tablas y campos y con valores de ejemplo para que esté todo bien claro. Así será más fácil que consigas la ayuda. Es que si simplemente dices que no funciona, no sale, necesitas ayuda... Tienes que ayudar a que te ayuden. Te recuerdo nuestra guía de estilo.
Ten la seguridad de que si no has conseguido más ayuda es, simplemente, porque no está bien clara la exposición de tu duda. Por favor, esfuérzate un poco más, gracias por tu colaboración.
Responder Con Cita
  #7  
Antiguo 26-10-2011
Avatar de alej.villa
alej.villa alej.villa is offline
Miembro
NULL
 
Registrado: may 2011
Ubicación: Caracas, Venezuela
Posts: 76
Poder: 13
alej.villa Va por buen camino
Ok aquí voy de nuevo

Bien vuelvo a explicar mi motivo principal de este mensaje para buscar una solución.

Tengo dos tablas la primera es:
Empleados Que tiene estos campos:
  1. Cédula (Primary key)
  2. Nombres
  3. Apellidos
  4. Sexo
  5. Turno
  6. Cargo
  7. Fecha de ingreso
  8. Patología
Y la segunda es:
Turno_Temporal que tiene estos campos:
  1. Cédula
  2. FechaIni
  3. FechaFin
  4. Estado
  5. Turno_Temp
  6. usuario
  7. fecha
  8. status
Ahora bien mi problemática consiste en que debo óbtener todas las cédulas de las dos tablas indicadas.

y como parámetros debo evalúar que en la tabla
Empleados
el turno indicado sea igual al campo turno de la tabla así: (empleado.turno = Indicado por el usuario)

y en la tabla Turno_Temporal el turno indicado por el usuario sea igual al campo Turno_Temp y el campo estado sea igual a activo
(Turno_Temporal.turno_temp=Indicado por el usuario) and (Turno_Temporal.estado='activo')

Intente hacer esto pero no me funciona, es decir, no me arroja ningún resultado la consulta

Código Delphi [-]
begin   
dm.Query.Close;   
dm.Query.SQL.Clear;   
dm.Query.SQL.Add('Select a.cedula, b.cedula From Empleados a, Turno_Temporal b');   
dm.Query.SQL.Add('Where a.turno = :turno and ((b.turno_temp = :turno) and (b.estado =:estado))');   
dm.Query.SQL.Add('Group by a.cedula, b.cedula');   
DM.Query.Parameters.ParamByName('estado').DataType:=ftString;   
dm.Query.Parameters.ParamByName('estado').Value:='activo';   
DM.Query.Parameters.ParamByName('turno').DataType:=ftString;   
DM.Query.Parameters.ParamByName('turno').Value:=ComboBox1.Text;   
dm.Query.Open;     
while not dm.Query.Eof do       
Begin         
SetLength(Arreglo, n+1);         
Arreglo[n]:=dm.Query.fieldbyname('cedula').AsString;         
Inc(n);         
dm.Query.Next;       
end;   
end;

Última edición por alej.villa fecha: 26-10-2011 a las 15:04:13. Razón: Codigo desordenado
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
Copiar tablas de BBDD distintas kirkhelek Firebird e Interbase 2 08-04-2010 21:23:36
Consulta Access con tablas en distintas BD. AMINOA2R Firebird e Interbase 5 23-02-2008 02:59:54
Consulta entre tablas de distintas BD kchilo SQL 5 05-09-2007 21:37:13
columnas de distintas tablas jonmendi SQL 1 23-12-2004 10:33:21
Listar datos de tablas distintas Irina Impresión 3 13-05-2003 18:05:45


La franja horaria es GMT +2. Ahora son las 18:42:40.


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