Delphi - inner join (SQL)

   
Vista:

inner join (SQL)

Publicado por alberto ortiz (66 intervenciones) el 15/11/2007 02:14:12
Deseo unir varias tavlas en una consulta SQL de la siguiente manera:
TABLA OBRAS TABLA CONTRATISTAS
nobra clavecontratista
nombre_obra nobra
comunidad nombre
monto

TABLA DEPOSITOS
nobra
concepto
cantidad

TABLA PAGOS
npago
nobra
idcontratista
cantidad
fecha

Necesito una consulta donde se visualize la siguiente informacion:

Nobra Comunidad Nombre del contratista Deposito Pagos

el objetico es saber los datos de una obra en concreto, donde se esta realizando, quin la esta haciendo, cuantos depositos se han hecho a una obra y cuantos pagos y se han realizado y por cuanto al contratista que esta realizando la obra.


espero haberme explicado si, no me di a entender por favor diganmelo

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

RE:inner join (SQL)

Publicado por E.T. (1108 intervenciones) el 15/11/2007 17:25:16
De hecho, si quieres detalles de tu consuta (que es cuantos pagos se ha hecho a ese contratista en esa obra y cuantos depositos se han hecho a la obra) necesitas tres consultas, podiras hacerlo con una pero se repetirian campos, por lo tanto en lo siguiente que te pongo sería como hacerlo con tres consultas:

Consulta numero 1:

select nobra,nombre_obra,comunidad, nombre_contratista
from obras, contratistas
where obras.clave_contratista=contratistas.clave_contratista

//aqui noté que en tu tabla de obras no tienes la clave del contratista, hay que ponerla y quitarla de la tabla de pagos (creo yo que estaría mejor en la tabla de obras)

Consulta numero 2:

select concepto, cantidad
from depositos
where nobra= :nobra

//No se si ya hayas trabajado con parámetros, si te fijas en el "where" viene un campo
" :nobra " si ves los dos puntos esto significa que se trata de un parámetro, ma adelante te explico por que lo uso

Consulta numero 3:

select npago, cantidad, fecha
from pagos
where nobra=:nobra

//al igual que en la consulta 2 tambien lleva el mismo parámetro

Ahora hay que poner un dataSource para cada query, y un dbgrid para cada dataSource, lo siguiente es enlazar los querys, selecciona el query numero 2 y ve a su propiedad datasource y elige el datasource numero1, luego elige el query 3 y dale de datasource tambien el numero 1, ahora activa los tres querys en el orden 1 2 3 y fijate en los dbgrids, deberia de mostrarte en el primero todas las obras, en el dos todos los depositos para la obra seleccionada, igual en el grid 3 te debe mostrar los pagos para el contratista de la obra seleccionada

Si tienes dudas o te marca errores escribe
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