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 09-09-2007
Avatar de enecumene
[enecumene] enecumene is offline
Miembro de Oro
 
Registrado: may 2006
Ubicación: Santo Domingo, Rep. Dom.
Posts: 3.040
Poder: 21
enecumene Va por buen camino
Es correcto esta consulta con tres Tablas?

Hola Compañeros del foro, estoy tratando de hacer una consulta con tres tablas en un reporte con un QuickReport, esta es la consulta que tengo:

Código SQL [-]
select Asistencia.nombre, Asistencia.tanda, Asistencia.cargo, Asistencia.fecha, Asistencia.tardanza, Asistencia.entrada, Salida.salida, Ajuste.licencia, Ajuste.excusa, Ajuste.permiso, Ajuste.enfermedad, Ajuste.vacacion, Ajuste.servicio Ajuste.nombre, Ajuste.cargo, Ajuste.fecha, Ajuste.tanda, Salida.tanda, Salida.fecha, Salida.cargo,  Ajuste.permiso, Ajuste.enfermedad, Ajuste.vacacion, Ajuste.servicio from (Asistencia inner join Salida on Asistencia.nombre = Salida.nombre) inner join Ajuste on Ajuste.nombre = Asistencia.nombre

pues al parecer no me funciona, cuando agrego los campos al dar doble click al query me sale esos campos:

EXP1009
EXP1010
EXP1011
EXP1012

estare haciendo mal la consulta? estoy usando ADO+Access+Delphi7.

Saludos,
__________________

Mi BLOG - ¡Joder, leanse la guia de estilo!
Las Palabras son enanas, los ejemplos gigantes.
Responder Con Cita
  #2  
Antiguo 09-09-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Código SQL [-]
select Asistencia.nombre, Asistencia.tanda, Asistencia.cargo, Asistencia.fecha,
Asistencia.tardanza, Asistencia.entrada, Salida.nombre, Salida.salida, Ajuste.licencia,
Ajuste.excusa, Ajuste.permiso, Ajuste.enfermedad, Ajuste.vacacion,
Ajuste.servicio Ajuste.nombre, Ajuste.cargo, Ajuste.fecha, Ajuste.tanda,
Salida.tanda, Salida.fecha, Salida.cargo,  Ajuste.permiso, Ajuste.enfermedad,
Ajuste.vacacion, Ajuste.servicio 
from (Asistencia inner join Salida on Asistencia.nombre = Salida.nombre)
inner join Ajuste on Ajuste.nombre = Asistencia.nombre
Salida.salida, no se si causa problemas, yo usaria Salida.salida1
Revisa el color Rojo y tu codigo, veras la diferencia.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #3  
Antiguo 09-09-2007
pcicom pcicom is offline
Miembro
 
Registrado: may 2003
Ubicación: MONTERREY MEXICO
Posts: 253
Poder: 21
pcicom Va por buen camino
Re:

Intenta esto

Código SQL [-]
SELECT a.nombre, a.tanda, a.cargo, a.fecha, a.tardanza, a.entrada, 
  Salida.salida, Ajuste.licencia, Ajuste.excusa,
  Ajuste.permiso, Ajuste.enfermedad, Ajuste.vacacion, 
  Ajuste.servicio Ajuste.nombre, Ajuste.cargo, Ajuste.fecha, 
  Ajuste.tanda, Salida.tanda, Salida.fecha, 
  Salida.cargo,  Ajuste.permiso, Ajuste.enfermedad, Ajuste.vacacion, 
  Ajuste.servicio 
FROM Asistencia a 
INNER JOIN Salida on a.nombre = Salida.nombre 
INNER JOIN Ajuste on Ajuste.nombre = a.nombre

Puedes probar remplazando INNER por LEFT o RIGHT segun sea el caso

INNER te devuelve registros uno a muchos
LEFT te devuelve uno a uno
RIGHT te devuelve muchos a uno.
__________________
Poco ha de saber el que no pregunta.. Yo por eso soy un pregunton
Responder Con Cita
  #4  
Antiguo 11-09-2007
rafita rafita is offline
Miembro
 
Registrado: ago 2003
Ubicación: Cuenca- España.
Posts: 309
Poder: 21
rafita Va por buen camino
Hola,

Me parece que el problema lo tienes con Access: sólo admite un INNER JOIN.

Para comprobarlo elimina los campos de una tabla y el INNER JOIN correspondiente.
Si te funciona, haz lo propio con la otra tabla.
Si ambos te funcionan por separado, la cosa está clara: sólo admite uno.

Te recomiendo que con Access utilices esta sintaxis:
SELECT Campos FROM Tabla1, Tabla2, Tabla3 WHERE Condicion1 and Condicion2 and Condicion3

donde Condicion1, Condicion2 y condicion3 serían las mismas que poner en los INNER JOIN.

Te pongo un ejemplo similar al tuyo:
Código:
SELECT F.Id as FId, F.Factura, F.Importe as Importe_Factura, F.Descripcion as Descripcion_Factura, Anulada,
  Nombre as Nombre_Tercero, CIF as CIF_Tercero,
  P.Anno as Anno_Proyecto, P.Descripcion as Descripcion_Proyecto
FROM Facturas F, Terceros T, Proyectos P
WHERE (F.Id>0) and (F.Tercero = T.Id) and (F.Proyecto = P.Id);

// ---> INNER JOIN Terceros T ON F.Tercero = T.Id  
// ---> INNER JOIN Proyectos P ON F.Proyecto = P.Id
Saludos
__________________
Rafita.
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
Consulta SQL tres tablas. Paradox Noela SQL 8 03-08-2007 03:38:23
Correcto tratamiento de tablas en paradox zugazua2001 Tablas planas 1 30-09-2005 14:53:38
Consulta para tres tablas...... inexperto SQL 1 08-08-2004 06:59:04
Join De Tres Tablas Con Acces MAGRANA SQL 2 01-07-2004 17:51:44
Problemas con el entrelazado de tres tablas JAGOMAN SQL 6 03-03-2004 17:40:33


La franja horaria es GMT +2. Ahora son las 15:40:30.


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