FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Consulta SQL tres tablas. Paradox
Hola a todos
Estoy intentado hacer una consulta de tres tablas en Paradox 7. Las trablas son: Medias, Personas y Sectores. Quiero mostrar todos los registros de la Tabla Medias y solo los registros de las Tablas Personas y Sectores donde los campos sean iguales. La tabla Medias tiene como clave primaria CdMedias y como claves foráneas CdPersona y CdSector, los valores de las claves foráneas pueden ser nulos. En la tabla de Personas tengo como clave primaria CdPersona, y tengo otros campos entre ellos el campo NombrePersona que es el que quiero mostrar en la consulta. En la tabla Sectores tengo como clave primaria CdSector, y tengo entre otros el campo NombreSector que es el que quiero mostrar en la consulta. En realidad la consulta que yo quiero es la siguiente: SELECT Medias.CdMedias, Persona.NombrePersona, Sector.NombreSector FROM Sector RIGHT JOIN (Persona RIGHT JOIN Medias ON Persona.CdPersona = Medias.CdPersona) ON Sector.CdSector = Medias.CdSector ORDER BY CdMedias La consulta anterior esta hecha en Access y yo la necesito para Paradox, el problema que tengo es que Paradox no me reconoce esta sintaxis. Si intento hacer el Right Join anidado me da error. Alguien sabría decirme cual es la sintaxis adecuada para esta consulta en Paradox? Gracias por vuestro tiempo. |
#2
|
|||
|
|||
Consulta SQL con LEFT JOIN
SELECT M.CdMedias, P.NombrePersona, S.NombreSector
FROM Medias M LEFT JOIN Personas P ON P.CdPersona = M.CdPersona LEFT JOIN Sector S ON S.CdSector = M.CdSector ORDER BY M.CdMedias Esta consulta te va a traer todos los registros de medias y los nombres de personas y sectores que tienen asociados, en caso de que la tabla medias tenga algun codigo de persona o sector nulo e campo P.NombrePersona o S.NombreSector va a ser nulo tambien Si quisieras agragar restricciones relacionadas con las tablas secundarias (en donde haces los Left Joins) seria de la siguiente manera: ... LEFT JOIN Personas P ON P.CdPersona = M.CdPersona and P.Edad > 20 ... Si quisieras agregar restricciones relacionadas a la tabla Medias seria de la sigueite manera: SELECT M.CdMedias, P.NombrePersona, S.NombreSector FROM Medias M LEFT JOIN Personas P ON P.CdPersona = M.CdPersona LEFT JOIN Sector S ON S.CdSector = M.CdSector Where M.CdUnidadMedida = 2 and ... ORDER BY M.CdMedias En caso de que necesites hacer un Join en donde no se permitan los nulos tenes que usar INNER JOIN en vez de LEFT JOIN. Espero que te sirva Saludos Luciano |
#3
|
|||
|
|||
ha resultado!
Hola Luciano!
Si que me ha servido!! No sabes bién cuanto te lo agradezco. Muchas gracias por tu tiempo. Besos. |
#4
|
|||
|
|||
Yo tengo el mismo problema y no puedo... ni en access con el SQL ni en el adoquery de delphi :(
Tengo 3 tablas *PlanillaControlDistr *TipoPlanilla *Repartidor en la tabla "PlanillaControlDistr" tengo el codigo de tipo de planilla y el codigo de repartidor. y quiero vincular las 3 con JOIN lo pruebo así y no funciona:
vinculando 2 si pude, pero no puedo vincular la tercera... Esto es cuando vinculo 2, que si funciona:
que errores tengo vinculando las 3 tablas? Gracias desde ya |
#5
|
||||
|
||||
¿Por qué no funciona, no devuelve los resultados deseados o te da algún error?
__________________
Si no lees esto no vivirás tranquilo Non lle poñades chatas â obra namentras non se remata. O que pense que vai mal que traballe n’ela; hai sitio para todos. (Castelao) |
#6
|
|||
|
|||
con esto
dice: Error de sintaxis (falta operador) en la expresión de consulta 'A.Cod_Rep = B.CodRep LEFT JOIN Tipoplanilla C ON A.CodTipoplanilla = C.Tipoplanill' |
#7
|
||||
|
||||
prueba a poner
Un saúdo
__________________
Si no lees esto no vivirás tranquilo Non lle poñades chatas â obra namentras non se remata. O que pense que vai mal que traballe n’ela; hai sitio para todos. (Castelao) |
#8
|
|||
|
|||
tampoco..
me aparecen "showmessages" pidiendo datos en access |
#9
|
|||
|
|||
proba escribir la sentencia de esta forma:
SELECT A.*, B.Nombre, C.Descr FROM PlanillaControlDistr A LEFT JOIN Repartidores B ON (B.CodRep = A.Cod_Rep) LEFT JOIN Tipoplanilla C ON (C.Tipoplanilla = A.CodTipoplanilla) Saludos!
__________________
Luciano DG |
Herramientas | Buscar en Tema |
Desplegado | |
|
|
|