Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Go Back   Foros Club Delphi > Principal > SQL
Register FAQ Members List Calendar Guía de estilo Today's Posts

Reply
 
Thread Tools Search this Thread Display Modes
  #1  
Old 09/09/2007
enecumene's Avatar
[enecumene] enecumene is offline
Miembro de Oro
 
Join Date: May 2006
Location: Santo Domingo, Rep. Dom.
Posts: 3,040
Poder: 24
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.
Reply With Quote
  #2  
Old 09/09/2007
Caral's Avatar
[Caral] Caral is offline
Miembro Premium
 
Join Date: Aug 2006
Posts: 7,659
Poder: 28
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
Reply With Quote
  #3  
Old 09/09/2007
pcicom pcicom is offline
Miembro
 
Join Date: May 2003
Location: MONTERREY MEXICO
Posts: 253
Poder: 24
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
Reply With Quote
  #4  
Old 11/09/2007
rafita rafita is offline
Miembro
 
Join Date: Aug 2003
Location: Cuenca- España.
Posts: 309
Poder: 24
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:
Code:
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.
Reply With Quote
Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
Consulta SQL tres tablas. Paradox Noela SQL 8 03/08/2007 03:38
Correcto tratamiento de tablas en paradox zugazua2001 Tablas planas 1 30/09/2005 14:53
Consulta para tres tablas...... inexperto SQL 1 08/08/2004 06:59
Join De Tres Tablas Con Acces MAGRANA SQL 2 01/07/2004 17:51
Problemas con el entrelazado de tres tablas JAGOMAN SQL 6 03/03/2004 17:40


All times are GMT +2. The time now is 05:29.


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