![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
#18
|
|||||
|
|||||
|
Hola Amigo,
disculpa la tardanza y disculpa que no fui explicitamente claro con el INNER JOIN, inlcluso no te dije toda la historia, la cual es necesario que la domines de lo contrario no podras hacer querys eficientes. Por favor lee detalladamente las explicacion a continuacion del JOIN y al final del post te escribo el querry que ocupas. Primero debes saber que hay dos sabores de JOIN: INNER JOIN LEFT OUTER JOIN si tenemos tabla_A: Id, englishword -------------- 1 bird 2 house 3 dog 5 cat 6 black si tenemos tabla_B: Id, spanishword -------------- 1 pajaro 2 casa 3 perro 5 gato si hacemos el siguiente select:
el resultado seria: Cita:
Ahora, si queremos sacar TODOS los registros de la tabla_A con su respectivo dato de la tabla_B pero tambien incluyendo los que no pudieran tener equivalencia en tabla_B entonces harias:
el resultado seria: Cita:
Hasta aqui ya te estaras imaginando que lo que necesitas es usar LEFT OUTER JOIN, porque basicamente tu quieres repasar todos los registros de la tabla presupuesto la par con resumenes si (si los hubiera) de la tabla compras. Sin envargo en estos ejemplo la relacion es de 1 a 1, o almenos de muchos a 1 es decir, por un registro en la tabla A se espera un tan solo registro en la tabla B, pero el asunto se vuleve diferente cuando la relacion es uno a muchos, por ejemplo: si la tabla B tuviera: Id, spanishword -------------- 1 pajaro 1 ave 1 plumifero 2 casa 3 perro 5 gato como vez, el id=1 esta 3 veces si se aplica el utimo querry el resultado seria: Cita:
Por consiguinete, si tu haces el siguinete querry:
Los sum() y los count() de la tabla COMPRAS saldran bien, pero los de la tabla presupuesto saldran mal ya que ahora hay datos duplicados por cada ocurrencia encontrada en compras, de la misma manera como se duplica el dato "Bird" en el ejemplo que te puse tambien aqui el dato p.monto saldra duplicado. Entonces como se resuleve este tipo de problemas? bueno se resuelve resumiendo la tabla compras UNA TAN SOLA VEZ y enlazando el resultado a la tabla presupuesto usando LEFT OUTER JOIN, Es decir envez de escribir el nombre de la tabla despues del left outer join se puede perfectamente escribir un SELECT que resume ya la tabla antes de hacer el enlazado, ejemplo: Cita:
Ya terminamos?, no todavia, , c.Tot_compr y c.C_mon_compr ya tienen el total de la compra y la cuenta de la compra lista para enlazarla con una tabla mestra, pero tu todavia necesitas resumir la tabla presupuesto para sumar y contar el valor monto.La manera de sumarizar la tabla presupuesto e incluir los totales de la tabla compra sin duplicar se puede hacer usando el comando DISTINCT. creo que este es el querry final: Cita:
Espero que te funcione o por lo menos te haya dado la suficiente informacion para adaptar tus querrys. Última edición por Bpascal fecha: 19-01-2009 a las 22:49:00. |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Facturación e Inventario | silver07 | Conexión con bases de datos | 49 | 22-10-2015 19:45:33 |
| SQL inventario | mjjj | SQL | 7 | 12-12-2008 17:13:29 |
| Aplicacion + Inventario | mjjj | Varios | 8 | 03-11-2008 15:58:54 |
| Costo de Inventario | NickName | SQL | 4 | 09-10-2006 06:30:31 |
| Inventario de Hardware | vichovi | API de Windows | 3 | 03-01-2005 15:35:10 |
|