Progress - Consultas en tablas

 
Vista:

Consultas en tablas

Publicado por yairzinho (4 intervenciones) el 09/12/2011 19:47:59
Buen dia:

Agradeceria me apoyaran con una consulta ejemplo a 2 tablas, de una misma base de datos.
Necesito sacar información de dos tablas de la misma base de datos.

De antemano muchas gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Consultas en tablas

Publicado por DparteD (129 intervenciones) el 09/12/2011 19:54:28
Deberias ser un pco mas explicito en tu consulta para poder ayudarte.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Consultas en tablas

Publicado por yairzinho (4 intervenciones) el 09/12/2011 20:32:45
Cuento con dos tablas como las siguientes, sus campos los muestro entre parentesis:
* TblUsuario (ingusuario, ingfecha, ingprocedencia)
* TblNombre (ingusuario, ingnombre, ingpaterno, ingmaterno)

Necesito realizar una consulta que me permita mostrar los siguientes datos: ingprocedencia, ingnombre, ingpaterno e ingmaterno, pero estan en distintas tablas; no se como extraer datos de mas de una tabla.

Como comentario, estoy aprendiendo a programas en Progress y únicamente he realizado consultas a una única tabla, o sea, una colsulta como esta:

FOR EACH saldos WHERE ingreso>0.
DISPLAY saldos.monto saldos.fecha.
END.

Agradeceria mucho tu ayuda y que tengas buen dia.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Consultas en tablas

Publicado por KikeMtz (6 intervenciones) el 13/12/2011 00:27:34
Que tal Yairzinho, es sencillo, puedes hacerlo de cualquiera de las siguientes formas:

1) Anidando los for each de ambas tablas

/* TblUsuario (ingusuario, ingfecha, ingprocedencia) */
for each TblUsuario no-lock.
/* TblNombre (ingusuario, ingnombre, ingpaterno, ingmaterno) */
for each TblNombre no-lock
where TblUsuario.ingusuario = TblNombre.ingusuario:
display

TblUsuario.ingprocedencia
TblNombre.ingnombre
TblNombre.ingpaterno
TblNombre.ingmaterno.
end.
end.

2) Realizando el join de ambas tablas
/* TblUsuario (ingusuario, ingfecha, ingprocedencia) */
for each TblUsuario no-lock,
/* TblNombre (ingusuario, ingnombre, ingpaterno, ingmaterno) */
each TblNombre no-lock
where TblUsuario.ingusuario = TblNombre.ingusuario:
display

TblUsuario.ingprocedencia
TblNombre.ingnombre
TblNombre.ingpaterno
TblNombre.ingmaterno.
end.


Dependiendo de la finalidad de la consulta, puedes usar uno u otro. Espero te sea de utilidad la informacion.

Saludos,
KikeMtz.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Consultas en tablas

Publicado por yairzinho (4 intervenciones) el 13/12/2011 00:33:10
Muchisimas gracias KikeMtz.

Saludos y bendiciones aprovechando la fecha.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Consultas en tablas

Publicado por KikeMtz (6 intervenciones) el 13/12/2011 00:35:46
Igualmente.

Saludos,
KikeMtz.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Consultas en tablas

Publicado por DparteD (129 intervenciones) el 13/12/2011 18:28:33
Hola.
Si bien la solucion de KikeMtz puede ser valida, creo que seria mas eficaz y rapido hacerlo del uno de los dosn modos que indico.

1.- Si las dos tablas tienen como indice el campo (ingusuario) hariamos lo siguiente:

find TblNombre where TblNombre.ingusuario = TblUsuario.ingusuario no-lock no-error.
if available TblNombre then do:
display TblUsuario.ingprodecencia TblNombre.ingnombre TblNombre.ingpterno TblNombre.materno.
end.
end.

2.- por si no son indices y aunque lo sean siempre seria mas rapido:

for each TblUsuario, each TblNombre where TblNombre.ingusuario = TblUsuario.ingusuario .
display TblUsuario.ingprodecencia TblNombre.ingnombre TblNombre.ingpterno
end.

Espero que te sea de utilidad y Feliz Navidad.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Consultas en tablas

Publicado por DparteD (129 intervenciones) el 16/12/2011 12:46:28
perdon por haberme comido en la primera opcien el " FOR EACH TblUsuario."

Quedaria así:

FOR EACH TblUsuario.
find TblNombre where TblNombre.ingusuario = TblUsuario.ingusuario no-lock no-error.
if available TblNombre then do:
display TblUsuario.ingprodecencia TblNombre.ingnombre TblNombre.ingpterno TblNombre.materno.
end.
end.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar